Static/dynamic control for optimizing a useful objective

ABSTRACT

A method, computer system, and program product for optimizing a useful objective function with respect to a dynamic parameter vector and a static parameter vector. The method, called the static/dynamic control (MDC) method, either minimizes or maximizes the useful objective function subject to a state equation, initial conditions, terminal conditions, constraints, and dynamic limitations. The SDC method includes an algorithm having two formulations: a period formulation and a fully continuous formulation. With the period formulation, the dynamic optimization variables associated with the dynamic limitations are permitted to be discontinuous, parametric functions of time. With the fully continuous formulation, the dynamic optimization variables are permitted to be continuous, non-parametric functions of time. The SDC method is computer implementable and employs an iterative process including an inner loop and an outer loop. The inner loop terminates when the objective function has changed by a satisfactory amount during a fixed outer-loop iteration. The outer loop terminates when the SDC procedure converges. The SDC method may be used to optimize a spacecraft trajectory objective and a spacecraft design objective simultaneously. Optimizing spacecraft objectives via SDC does not require approximating the physics or dynamics of space flight. Thus, any number of gravitating bodies, gravitational harmonics, radiation pressure, atmospheric drag, and general relativistic corrections can be accounted for when using the SDC method. The SDC method does not require prespecification of a planetary flyby sequence for space flight and is capable of identifying optimal flyby sequences.

BACKGROUND OF THE INVENTION

1. Technical Field

The present invention relates to a method, computer system, and program product for optimizing a useful objective function with respect to a dynamic parameter vector and a static parameter vector, and more particularly, to optimizing a spacecraft objective such as a spacecraft trajectory objective and a spacecraft design objective.

2. Related Art

A goal of spacecraft trajectory optimization is to obtain the best trajectory. Spacecraft trajectory optimization is a dynamic problem. A dynamic problem involves a sequence of decisions made over time. For example, the thrust direction for a spacecraft engine must be selected on day one of a space flight. Then a new thrust direction must be selected for day two, and so on. Each previous decision affects all future decisions. A complete set of decisions for the total flight time is necessary to define a trajectory.

A goal of spacecraft design optimization is to obtain the best design. Spacecraft design optimization is a not a dynamic problem. Design decisions are not linked to a time sequence. For example, the decisions of how large a solar array to build, how much fuel to carry, and when to launch a spacecraft are static or non-dynamic decisions.

The overall performance of a spacecraft is a function of both the spacecraft trajectory and the spacecraft design. Further, the spacecraft design will impact the spacecraft trajectory and vice versa. Since spacecraft design and spacecraft trajectory are not independent, the most efficient spacecraft design and the most efficient spacecraft trajectory cannot be determined independently.

Current methods for optimization are constructed to solve either dynamic problems or static problems. Related art optimization methods cannot solve problems which have both a static part and a dynamic part without approximation. Related art methods for optimization can be divided into two categories. The first category is non-dynamic or static optimization methods known as “parameter optimization”. The second category is dynamic optimization methods known as “optimal control.”

Parameter optimization was originally developed to solve static problems. Parameter optimization is directly applicable to static problems, such as spacecraft design. However, parameter optimization is not easily or accurately applicable to dynamic problems such as space flight trajectories. Parameter optimization can only be applied to dynamic problems when the true dynamic nature of the problem is approximated or removed entirely. Since parameter optimization cannot solve general dynamic problems without approximation, parameter optimization cannot solve the combined static and dynamic problem of spacecraft design and trajectory without approximation.

Optimal control was developed for exclusively dynamic problems. Optimal control is applicable to dynamic problems such as spacecraft trajectory optimization. However, optimal control is not suited to static problems such as spacecraft design.

The related art uses either parameter optimization or optimal control to design deep space missions. The related art cannot achieve the combined benefits of both parameter optimization and optimal control simultaneously. The following two subsections describe the parameter optimization and the optimal control methods presently in use.

A. Parameter Optimization Methods

The related art applies parameter optimization to the dynamic problem of spacecraft trajectory optimization by making several significant approximations. The physics of the trajectory problem is approximated by instantaneous impulses followed by ballistic coasts. The instantaneous impulses are intended to represent the effect of thrust on a spacecraft. A sequence of impulses and coasts can roughly approximate a continuously running engine. The ballistic coasts usually only account for the gravitational influence of a single central object (usually the sun.) All long range planetary gravitational effects are ignored. Since planetary gravitation is ignored, the ballistic coasts are perfect conic sections whose shape is always time independent. The time independence of the shape is a necessary assumption for the non-dynamic parameter optimization method.

Of particular interest is the ion propulsion engine. Ion propulsion engines are far more efficient than ordinary traditional chemical engines. Ion propulsion engines are expected to replace many applications of chemical engines in the near future. Ion propulsion engines have significantly different operating characteristics than chemical engines. In particular, ion engines typically operate continuously for days or even years at low thrust intensities. The impulse/ballistic coast approximation required by parameter optimization is a particularly poor approximation when applied to ion engines.

The parameter optimization method used in the related art requires prespecification of the sequence of planets that the spacecraft will pass by closely (“planetary flyby sequence”). Thus, the planetary flyby sequence is not susceptible to parameter optimization. Individual planetary flybys are prespecified by fixed constraints. Prespecification of flybys greatly reduces the likelihood of discovering the most efficient flyby sequence.

Parameter optimization typically requires the physics of planetary flybys to be approximated as a collision at a single point in space. The spacecraft trajectory is propagated to the center of the flyby body without accounting for the gravity of the body. Flybys are then modeled as an instantaneous change in velocity without a change in the spacecraft position. With parameter optimization, the true extended spatial and dynamic nature of flybys is not correctly represented. This approximation significantly reduces the precision of parameter optimization solutions.

Related art parameter optimization methods do not optimize spacecraft thrust sequences directly. Instead, related art methods optimize instantaneous changes to spacecraft velocity. Optimizing velocity changes neglects or only approximates the effect of the dynamic nature of the spacecraft mass. The spacecraft mass is a decreasing function of time because fuel is burned. Neglecting this fact reduces the precision of parameter optimization solutions.

B. Optimal Control Methods

The related art uses an optimal control method to calculate or fine tune navigation paths or trajectories for spacecraft. The optimal control method is known as the calculus of variations (“COV.”) The COV method is not capable of calculating optimal trajectories for spacecraft from scratch. An efficient trajectory and/or a prespecified flyby sequence must be supplied as input. The input trajectory, or trajectory associated with a prescribed flyby sequence, is not derived from a precise optimization procedure and is therefore not necessarily optimal. Similarly, the prespecified flyby sequence is not necessarily optimal.

Related art COV methods typically make several approximations similar to the approximations made by related art parameter optimization methods. For example, thrust is approximated as a sequence of impulses, spacecraft propagation only takes into account the Sun's gravity, and planetary flybys are treated as an instantaneous change in spacecraft velocity. As a result, the COV method is limited in precision in the same way that the parameter optimization method is limited in precision.

The COV method also suffers from extreme sensitivity to flyby parameters. The extreme sensitivity of COV results in a substantial reduction in the improvement that COV can potentially achieve when flybys are involved. The sensitivity problem limits the COV method to consider trajectories with only a small number of flybys.

The main advantage of the COV method is that it is a dynamic method. The dynamic aspect of the COV method could, in theory, permit the correct representation of the dynamics of space flight. Unfortunately, the COV method is not robust enough to solve the trajectory problem without relying on significant approximations or requiring the prespecification of the flyby sequence.

Application of the preexisting general optimization methods, known as neural networks, genetic algorithms, and simulated annealing to static/dynamic problems, may produce inferior results that do not converge to optimal solutions. These optimization methods are heuristic or approximate methods involving various types of random searches to find good solutions. Heuristic methods often fail to find the best or optimal solutions.

An accurate method is needed to simultaneously optimize both dynamic and static variables collaboratively, such as by simultaneously taking into account the effect of navigation on spacecraft design, and vice-versa.

SUMMARY OF THE INVENTION

The present invention of static/dynamic control (“SDC”) provides a method for optimizing a useful objective, comprising the steps of:

providing a computer system having:

a memory device;

a code located on the memory device;

a processor for executing the code; and

a useful objective function J coupled to the code, wherein the code includes a static/dynamic control program for optimizing J with respect to a dynamic control vector v(t) and a static parameter vector w, and wherein t denotes time;

providing input data for the static/dynamic control program, wherein the input data is coupled to the code;

optimizing J with respect to v(t) and w, by executing the static/dynamic control program and using the input data; and

outputting a computed result from the optimizing step to an output device within the computer system.

The present invention provides a first computer system for optimizing a useful objective, comprising:

a memory device,

a computer code located on the memory device;

a computer processor for executing the computer code;

a useful objective function J coupled to the computer code, wherein the computer code includes a static/dynamic control program for performing an optimization of J with respect to a dynamic control vector v(t) and a static parameter vector w, and wherein t denotes time; input data for the static/dynamic control program; and an output device for receiving a result from the static/dynamic control program.

The present invention provides a second computer system for optimizing a useful objective, comprising:

a memory means for storing data on a memory device;

a computer code, located on the memory device, for optimizing a useful objective function J with respect to a dynamic control vector v(t) and a static parameter vector w, wherein t denotes time;

a processor means for executing the computer code;

an input means for transferring input data to the static/dynamic control program; and

an output means for receiving a result from the static/dynamic control program.

The present invention provides a computer program product, comprising:

a recordable medium; and

a computer code recorded on the recordable medium. wherein the computer code includes a static/dynamic control program.

By optimizing a useful objective, the present invention produces a useful, concrete, and tangible result. In particular, the useful objective may include a spacecraft objective, a groundwater decontamination objective, or a chemical reactor objective.

The present invention has the advantage of solving problems having both a static and a dynamic aspect. In the related art, optimization algorithms are designed for either static problems or dynamic problems, but not both.

The present invention has the advantage of solving a generalized state equation. The state equation include such equations as Newton's equations of motion, general relativistic equations of motion, Darcy's law of potential flow for groundwater movement, computational fluid dynamics equations for air flow over an aircraft, and transient equations for the transport of neutrons, radiation, heat, electric current, etc.

The present invention has the advantage of accommodating generalized physical constraints such as requiring: a minimum distance between a spacecraft and the sun so as to protect the spacecraft from overheating, a maximum feasible thrust magnitude for a spacecraft, or a maximum allowed temperature during operation of a chemical reactor in a chemical processing system.

The present invention has the advantage of allowing the initial or the terminal condition of the state of the system to be a variable. Related art optimal control methods require the initial state of the system to be given and fixed.

The present invention has the advantage of including an algorithm having two formulations: a period formulation and a fully continuous formulation. With the period formulation, the dynamic control is permitted to be a discontinuous, parametric function of time. The usefulness of the period formulation is illustrated by the capability of changing engine throttle once every fixed number of days, such as once per ten days. With the fully continuous formulation, the dynamic control is permitted to be non-parametric and continuous in time. Illustrative of the usefulness of the fully continuous formulation is the capability of satisfying a generally recognized need to optimize solar sail and light propulsion spacecraft, which are expected to be deployed in the next few years.

The present invention has the advantage of solving spacecraft optimization problems without approximation to the physics or dynamics involved. Among the effects susceptible of inclusion by SDC are general relativistic corrections, radiation pressure, continuous thrust, planetary harmonics, dynamic interaction between spacecraft and planetary flybys, gravitational influence of any number of solar system objects, and planetary drag on spacecraft traversing a planetary atmosphere. Related art methods require simplifying assumptions for compatibility with related art algorithms.

The present invention has the advantage of satisfying a generally recognized and existing need to optimize both ion propulsion spacecraft and combination chemical and ion propulsion spacecraft designs and trajectories. Related art methods perform particularly poorly for ion propulsion and general low thrust spacecraft.

The present invention has the advantage of enabling mathematical derivatives to be computed exactly. Exact derivatives result in a more robust process and faster convergence. The related art typically uses approximate derivatives.

The present invention has the advantage of employing a fully second order optimization algorithm which cannot converge to false minima or saddle points. Both the COV and parameter optimization methods currently in use can converge to false minima or saddle points.

The present invention has the advantage of converging only to optimal solutions which satisfy both the necessary and sufficient conditions of optimality. Existing heuristic optimization methods (neural networks, genetic algorithms, simulated annealing) often fail to converge to optimal solutions, since they are not designed to find optimal solutions.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts a flow chart of the SDC method, in accordance with a preferred embodiment of the present invention.

FIG. 2 depicts the SDC algorithm of FIG. 1 for the period formulation.

FIG. 3 depicts an example of a single component of the dynamic control vector v(t) that is constant within each of several time periods, in accordance with the period formulation of FIG. 2.

FIG. 4 depicts the period formulation of FIG. 2 applied to an example of spacecraft design and trajectory optimization.

FIG. 5 depicts the first-iteration spacecraft trajectory for the example in FIG. 4 with the initial iteration values of: spacecraft travel for 3.25 years beginning Jan. 1, 2014 with zero spacecraft thrust for the entire flight.

FIG. 6 depicts the optimal converged spacecraft trajectory for the example of FIGS. 4-5, using nuclear electric propulsion (NEP).

FIG. 7 depicts the time dependence of the converged optimal thrust sequence and velocity magnitude for the example of FIG. 6.

FIG. 8 depicts an assumed maximum thrust verses distance to the sun for the example of FIG. 9, using solar electric propulsion (SEP).

FIG. 9 depicts the optimal converged spacecraft trajectory for the example of FIGS. 4-5, using solar electric propulsion (SEP).

FIG. 10 depicts the time dependence of the converged optimal thrust sequence and velocity magnitude for the example of FIG. 9.

FIG. 11 depicts the SDC algorithm of FIG. 1 for the fully continuous formulation.

FIG. 12 depicts a flow chart of a computer system showing the data coupling associated with computer implementation of the SDC method, in accordance with a preferred embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION 1. Overview

This section presents the form and theoretical basis for a novel process called the Static/Dynamic Control (SDC) process which solves useful physical problems. The general physical problem's form arid the SDC process which solves these problems was initially invented to address spacecraft design and trajectory optimization problems. However, the SDC process is applicable to a broad class of physical problems in addition to spacecraft design and trajectory optimization, including groundwater decontamination system design and operation, oil extraction system design and operation, chemical reactor design and operation, economic decision modeling, aircraft design and operation, automobile design, reservoir system design and operation, agricultural crop yield maximization, agricultural pest minimization, and manufacturing process design.

The SDC process optimizes a useful objective. A useful objective is a state or condition expressing a magnitude or quantity associated with a practical application. An example of a useful objective is the volumetric size of an automobile engine. Another example of a useful objective is the mass of fuel utilized in a spacecraft mission. A useful objective is mathematically represented by a useful objective function J, such as the function J defined in Equation (2) infra. J is a function of optimization parameters. Optimizing the useful objective, or optimizing the useful objective function J, is accomplished by either maximizing or minimizing J with respect to the optimization parameters. A value of J is defined as the computed value of J when J is evaluated at particular values of the optimization parameters.

The SDC process includes an algorithm having two formulations: a period formulation and a fully continuous formulation. With the period formulation, the dynamic optimization variables are permitted to be discontinuous in time, and are alternatively permitted to be continuous in time. With the fully continuous formulation, the functions serving as the dynamic optimization variables are represented only as continuous in time.

Utilization of the SDC process includes the following steps. First, a physical problem is posed in a form which is analogous to the SDC period formulations of subsections 4 and 6, or the fully continuous formulation of Appendix B, subsection 2. Second, the problem is solved using the SDC algorithm steps specified in subsection 5 for the period formulation or in Appendix B, subsection 3 for the fully continuous formulation. Third, the physical design produced by the SDC algorithm is implemented.

Part of the SDC process is the SDC algorithm. The SDC algorithm addresses situations when it is desirable to optimize a set of time-varying variables, and a set of fixed-in-time variables simultaneously with the added complexity of letting the state at either the start or the end of time be a function of control variables. In addition, the algorithm described here is capable of optimizing the time-duration and start-time for general physical problems. When the SDC process is applied to spacecraft, the spacecraft design, launch date, launch energy, flight-time and trajectory can be optimized simultaneously.

While the SDC method can be implemented analytically for simple problems, practical problems typically require computer implementation. The data coupling associated with computer implementation for computer system 600 is illustrated in FIG. 12. Input data 620 is coupled to SDC computer code 610. An optimization of a useful objective function J, which is defined and discussed in subsection 3 infra, is accomplished by execution of the SDC computer code 610, using the algorithm of the SDC method. The SDC computer code 610 may be located within a first portion 640 of a memory device 630 of the computer system 600. The computer system 600 includes a processor 670 for executing the SDC computer code 610. As a result of the execution of the SDC computer code 610, output data 680 is generated. The memory device 630 may include, inter alia, read-only memory (ROM), random-access memory (RAM), or both. The computer code 610 could be hard wired into ROM or loaded into RAM, of the memory device 630, as needed. The coupling of the input data 620 to the SDC computer code 610 can be accomplished many different ways. One way is to have some or all of the input data 620 hard wired into the SDC computer code 610. Another way is to have the input data 620 stored a second portion 650 of the memory device 630. The coupling of the input data 620 to the SDC computer code 610 can also be accomplished by transfer of the input data 620 from an input device 615 to the SDC computer code 610. The input device 615 could be any input device, such as a computer keyboard, a removable or nonremoveable hard disk drive, a floppy disk drive, a Bernoulli drive, or a magnetic tape drive. The output data 680 may include any data available to the SDC computer code 610, such as a computed result by the SDC computer code 610. The output data 680 could be transferred from the computer code 610 to any output device 690, such as a printer, a plotter, a removable or nonremovable hard disk drive, a floppy disk drive, a Bernoulli drive, a magnetic tape drive, or the screen of a computer monitor. The SDC computer code 610 could be recorded on any recordable medium, such as the memory device 630, a disk, or a magnetic tape.

The various components, such as the memory device 630, processor 670, input device 615, and the output device 690, within the computer system 600 may each be physically located at any distance with respect to one another. For example, the memory device 630 and processor 670 may be located in Chicago, the input device 615 may be located in Denver, and output devices 690 may be located in both Denver and Boston.

The useful objective function J may be coupled to the SDC computer code 610 in any practical manner. For example, the useful objective function J may be hard wired into the SDC computer code 610. As another example, a plurality of useful objective functions J may be included in SDC computer code 610, with the user of the SDC computer code 610 selecting his or her desired J by means of user input data 620. A third example is having the useful objective function J formed by a code module that is external to the SDC computer code 610 and is executable by the SDC computer code 610. A fourth example is having the SDC computer code 610 choose one of several available useful objective functions J as a function of the result of an auxiliary calculation by the SDC computer code 610. For example with a spacecraft application involving Mars as a flyby, the SDC computer code 610 could choose to minimize the amount of fuel spent, or to maximize the time during which the spacecraft is within a given distance from the surface of Mars, as a function of the computed distance between Mars and the Sun when the spacecraft is within the gravitational environment of Mars. Numerical parameters associated with a useful objective function J may be coupled to the computer system 600 in various ways, such as by being hard wired into the SDC computer code 610, stored on an auxiliary storage device such as a hard disk, or supplied by user input such as by user keyboard input.

An applicable computer system 600 includes any mainframe computer or desktop computer, inasmuch as the computations for many applications can be performed in a practical amount of time with a personal computer. For the Example 2 discussed infra in subsection 3, part C, the SDC calculations comprising 1941 iterations were performed in only 128.5 minutes on a SUN Ultra Sparc workstation.

Subsection 2 presents the notation conventions used in the description and theoretical basis of the SDC algorithm. A formulation of SDC applied to general engineering problems is given in subsection 3, part A. Subsection 3, part B presents an example of how the period formulation of SDC is applied to spacecraft design and trajectory problems. Two numerical examples of spacecraft optimization are given in subsection 3, part C. A detailed description of the SDC algorithm for the period formulation, applicable to general engineering problems. is presented in subsections 4 through 6. The theoretical basis of the SDC period formulation is presented in subsections 7 and 8. Appendix B describes the fully continuous formulation of the SDC algorithm. The algorithm steps and theoretical basis in Appendix B apply to general engineering problems which have time-continuous controls (i.e. period functions or dynamic limitations are unnecessary.)

2. Notation

The following notation convention is used. A general variable or function may be either upper or lower case letter. A variable or function may be scaler, vector, matrix, or rank 3 valued. The dimensions of a variable or function are determined by the definition and context. A complete list of definitions is included as appendix A.

The following general rules apply when a variable or function is referenced. Round brackets always enclose arguments for functions. For example, g(2) is the value of the function g evaluated with the argument 2. Square brackets enclose element indices for variables or functions of rank greater than zero. For example T[j] is the j^(th) component of the vector T. Square and round brackets can be combined. For example, T(x, v, w, t)[i] is the i^(th) component of the vector fiction T evaluated using the arguments x, v, w, and t.

Superscripts denote ordinary powers for rank zero objects. A superscript “t” on rank one and two objects indicates the transpose operation. Row and column vectors are distinguished. A vector referenced without a superscript t is assumed to be a column vector. A superscript of “−1” on rank two objects indicates the matrix inverse operation.

Subscripts involving x, v, u, w and/or t imply the object is a function and has been differentiated. For example $a_{ux} = {\frac{\partial^{2}a}{{\partial u}{\partial x}}.}$

The order of a differentiated function's elemental indices (in square brackets) is first undifferentiated function indices followed by indices resulting from differentiation. For example suppose T is a vector function. A rank three object is obtained by differentiating T with respect to the two vectors w and x. A single element of the rank three object is: $\begin{matrix} {{{T_{wx}\left( {x,v,w,t} \right)}\left\lbrack {i,j,k} \right\rbrack} = {\frac{\partial^{2}{T\lbrack i\rbrack}}{{\partial{w\lbrack j\rbrack}}\quad {\partial{x\lbrack k\rbrack}}}.}} & (1) \end{matrix}$

An element index of “:” indicates this index is free. For example, a rank two object (matrix) based on Equation (1) is

T _(wx)(x, v, w , t)[i, :, :]=∇ _(w)(∇_(x) T[i]))

A specific part of an object can be specified using the colon notation. For example, x(t)[4:6] is a vector with three components consisting of the fourth, fifth, and sixth components of the vector x(t). Similarly, T_(wx)(x, v, w, t)[i, 1:2, 1:3] is a two by three matrix consisting of the upper two by three block of the matrix T_(wx)(x, v, w, t)[i, :, :].

Ordinary scaler, vector, and matrix multiplication is implied when rank zero, one and two objects are multiplied. For example, suppose a is a scaler function and T is a vector function of vectors x, u, and w, then the [i, j] component of the product a_(ux)T_(w) is interpreted as: ${{product}\quad\left\lbrack {i,j} \right\rbrack} = {\sum\limits_{k = 1}^{n}\quad {\frac{\partial^{2}a}{{\partial{u\lbrack i\rbrack}}{\partial{x\lbrack k\rbrack}}} \cdot \frac{\partial{T\lbrack k\rbrack}}{\partial{w\lbrack j\rbrack}}}}$

Similarly, the [i, j] component of the product a_(ux)T_(w) ^(t) is interpreted as: ${{product}\quad\left\lbrack {i,j} \right\rbrack} = {\sum\limits_{k = 1}^{n}\quad {\frac{\partial^{2}a}{{\partial{u\lbrack i\rbrack}}{\partial{x\lbrack k\rbrack}}} \cdot \frac{\partial{T\lbrack j\rbrack}}{\partial{w\lbrack k\rbrack}}}}$

Multiplication involving rank three objects is indicated with explicit summations to avoid ambigtuity.

The symbol R represents the set of all real numbers. The symbol R is used to indicate the dimension of the value of all functions and variables. For example, the statement “uεR^(m)” indicates u is a vector with m components or is m-dimensional. The statement “βεR^(m×n)” indicates β is a matrix with m rows and n columns. Expressions of the form 0^(m×n) represent a matrix of all zeros with m rows and n columns.

Integer subscripts i, j, or 1, 2, etc. arc interpreted as part of a variable's name. Integer subscripts do not indicate differentiation. Subscripts of this type only appear as part of the names of the variables u_(i), t_(i), α_(i), β_(i), and γ_(i) (to be defined later.) For instance, β₂ is a matrix variable εR^(m×n). The j^(th) column of β₂ is represented by β₂[:, j] which is εR^(m). Subscripts of integer type are not used as part of function names.

The symbol “≐” is read “is defined to be” to distinguish between definitions and ordinary “=” assignment or equality statements. A “bar” over a function (for example {overscore (J)}_(uu)) indicates the function is evaluated at a given or “nominal” point. A function with a bar over it is at most only a function of time because the dependence on all other variables has been eliminated. The “Hessian” of a scaler function is defined to be the second derivative of the scaler function with respect to a vector. In general, a Hessian is a rank two object. The expression “H.O.T.” stands for “Higher Order Terms.” A complete list of variable and function definitions is included as Appendix A.

3. The Method of Static/Dynamic Control (SDC) and Its Applications

Either the period formulation or the fully continuous formulation of the SDC method of the present invention can be applied to any physical problem in which static and dynamic parameters are to be simultaneously optimized. Examples of engineering problems to which SDC can be applied are groundwater decontamination system design and operation, oil exploration system design and operation, spacecraft design and operation, chemical reactor design and operation, economic decision modeling, and aircraft design and operation. In particular, the SDC process can be applied to any engineering problem which can be described by three general equations, such as Equations (2), (3), and (4) infra.

A. General Discussion of SDC

FIG. 1 shows a flow diagram of the SDC method for both the period formulation and the fully continuous formulation. FIG. 1 illustrates how SDC is applied to a general engineering problem such as a static design and dynamic control problem. A useful objective 400 for the period formulation is represented by the following useful objective function J: $\begin{matrix} {{J = {{\int_{t_{o}}^{t_{N}}{{F\left( {{x(t)},{v(t)},w,t} \right)}\quad {t}}} + {\sum\limits_{i = 1}^{N}\quad {G\left( {{x\left( t_{i} \right)},{v\left( t_{i} \right)},w,t_{i},i} \right)}}}},} & (2) \end{matrix}$

or a mathematical equivalent. Both t₀<t_(N) and t₀>t_(N) are within the scope of the SDC period formulation. Note that the fully continuous formulation permits an analogous scope of time ordering (t₀<t_(f) and t₀>t_(f), as discussed in Appendix B). Any mathematical equivalent can be used in place of Equation (2). The analogous expression for J in the fully continuous formulation is Equation (182) in Appendix B. The goal of SDC is to optimize J by choosing the optimal or “best” dynamic control vector v(t) and optimal or “best” static parameter vector w. The useful objective J can be either minimized or maximized in value. The functions F and G in Equation (2) (or Equation (182) in the fully continuous formulation) are selected by the user of the invention to best represent the design and control objectives, Examples of optimizing useful objectives include minimizing spacecraft fuel usage, minimizing the contamination remaining in the ground for environmental decontamination problems, or maximizing useful products from a chemical reactor.

In the period formulation of SDC, the functions F and G can depend on the state vector x(t), the dynamic control vector v(t), the static parameter vector w, and time t. In the fully continuous formulation of SDC, F has the same dependencies as in the period formulation. and C can depend on w, x(t_(f)), v(t_(f)), and t_(f). The time t_(f) is a “final,” or terminal, value of t if t₀<t_(f). However, t_(f) is an “initial” value of t if t₀>t_(f).

The state vector x(t) represents the physical state of the engineering system at time t. The state vector encompasses variables not under the direct control of the engineer. Examples of x(t) include temperature, velocity, and chemical disequilibrium. In general, the engineer has indirect control over state variables x(t), such as temperature. For example, the engineer can change temperature by adjusting a thermostat. However, temperature can not be changed instantaneotusly, since temperature varies continuously according to the equations of transient heat transfer. The dynamic control vector v(t) represents the dynamic parameters which are under direct control by the engineer. Examples of v(t) include a thermostat setting, rocket thrust magnitude, and chemical inflow rate in a chemical reactor. The dynamic control vector v(t) represents decisions which may change continuously or discontinuously in time. Like v(t), the static parameter vector w represents parameters which are under direct control of the engineer. Unlike v(t), however, the static parameter vector w is associated with engineering design decisions which are not functions of time. Examples of uw include the size of a tank to build for a chemical reactor, the size of a pipe to use, or the launch date for a spacecraft. In general, the user of the invention defines v(t) and w to be the dynamic and static parameters for which optimal values are desired.

The second equation of the SDC process, in either the period formulation or fully continuous formulation, is the system state equation 401. The state equation includes the general form, $\begin{matrix} {{\frac{{x(t)}}{t} = {{{T\left( {{x(t)},{v(t)},w,t} \right)}\quad {x\left( {t = t_{0}} \right)}} = {\Gamma (w)}}},} & (3) \end{matrix}$

or a mathematical equivalent. The vector function T is selected by the user of the invention to best represent the time evolution of the state vector x(t) under the influence of the current state, the current dynamic control vector v(t), and the static parameter vector w. In both the period formulation and the fully continuous formulation, the vector function T may be a discontinuous function of time. The vector function Γ(w) represents an initial condition on x(t) if t₀<t_(f) and a terminal condition on x(t) if t₀>t_(f). The condition of the system can be optimized because it is allowed to be a function of the static parameter vector w. Examples of system state equations include: the heat equation, chemical equilibrium equations, groundwater contamination transport equations, dynamic equilibrium equations, equations describing the flow of electricity, and Newton's laws of motion under the influence of forces.

The third equation of the SDC process is the constraint equation 402. Use of the constraint equation 402 is optional, since the SDC formulation works with or without the constraints 402. The constraint equation 402 represents any physical or practical engineering constraints that may exist for a particular problem. Such engineering constraints are written in the general form,

L(x(t), v(t), w, t)≧0 and/or K(x(t), v(t), w, t)=0,  (4)

or a mathematical equivalent. Equation (4) applies to either the period formulation or the fully continuous formulation. The linear or nonlinear vector functions L and K are selected by the user of the invention to represent practical or physical constraints on the engineering problem. Examples of constraints include a maximum temperature for a chemical reactor, a maximum allowed level of residual contamination for environmental decontamination problems, or a minimum allowed distance between the sun and a spacecraft to avoid spacecraft overheating.

The fourth equation is used only by the period formulation of the SDC process and is the dynamic limitations equation 403. The dynamic limitations equation 403 is optional, since the SDC formulation works with or without dynamic limitations. The fully continuous formulation of the SDC process does not use the dynamic limitations equation 403. The dynamic limitation equation 403 represents any physical or practical engineering constraints on the time evolution of the dynamic control vector v(t) that may exist for a particular problem. The period formulation of the SDC process requires that the dynamic limitations be written in the general form, $\begin{matrix} {{v(t)} = {\begin{matrix} {f\left( {u_{1},w,t,1} \right)} & {{{for}\quad t} = {t_{0}\quad {to}\quad t_{1}}} \\ {f\left( {u_{2},w,t,2} \right)} & {{{for}\quad t} = {t_{1}\quad {to}\quad t_{2}}} \\ \vdots & \vdots \\ {f\left( {u_{N},w,t,N} \right)} & {{{for}\quad t} = {t_{N - 1}\quad {to}\quad {t_{N}.}}} \end{matrix}}} & (5) \end{matrix}$

The vector functions ƒ(u_(i), w, t, i) are selected by the user of the invention to properly represent any mechanical or practical limitations on the time evolution of v(t). The number of periods N may be chosen arbitrarily. The functions ƒ are parameterized by the dynamic parameter vector u_(i), the static parameter vector w, and time t. The functions ƒ can be used to effectively limit or constrain the SDC algorithm to consider only solutions v(t) which are of the form of Equation (5). The time intervals t_(i) to t_(i+1) are called “periods.” The dynamic parameter vector u_(i) is constant within each period i, i=1, 2, . . . , N. For example, the simplest useful set of functions ƒ is ƒ(u_(i), w, t, i)=u_(i). The dynamic control vector v(t) may be optimized such that v(t) is constant over each period, allowing changes only at period interfaces t_(i). Alternatively, v(t) may be subject to a dynamic limitation that allows v(t) to vary within each period, either continuously or discontinuously. An example of a single component of v(t) for the special case when v(t) is required to be constant within each period is plotted in FIG. 3. The example in FIG. 3 corresponds to a situation where it is impractical or infeasible to adjust a dynamic control continuously in time. An example is when v(t) is spacecraft thrust and commands to change spacecraft thrust can only be transmitted once every day. An example of incorporating constraints 402 into the useful objective 400 and incorporating dynamic limitations 403 into “period” functions ƒ is given in the subsection 3, part C.

Once the user of the invention has selected a useful objective function 400, a state equation 401, (optionally) a constraint equation 402, and a dynamic limitation equation 403, the static/dynamic algorithm 404 can be used. The static/dynamic (SDC) algorithm 404 generates the optimal values for v(t) and w such that the useful objective 400 is optimized while obeying the state equation 401, and any constraints 402 and dynamic limitations 403. The optimum values of v(t) and w are used in step 405 for obtaining an optimum static engineering design and/or an optimum dynamic control.

FIG. 2 is a flow chart describing the period formulation of the SDC algorithm 404 in greater detail. The SDC algorithm for the period formulation 404 is an iterative procedure which includes an inner loop terminating in an adequacy of improvement test 411, and an outer loop terminating in a convergence test 412. The step 406 in the period formulation of the SDC algorithm 404 incorporates the constraints 402 into the useful objective 400 and/or incorporates dynamic limitations 403 into “period” functions ƒ (see FIG. 1 for useful objective 400, constraints 402, dynamic limitations 403, and SDC algorithm 404). Note that incorporation of dynamic limitations 403 into period functions ƒ is implemented only if the SDC application includes a dynamic limitation.

The step 407 in FIG. 2 of the period formulation of the SDC algorithm 404 provides arbitrary initial approximations for v(t) and w, and then uses the initial approximations of v(t) and w and the state equation 401 to compute x(t). The state x(t) is obtained by integrating Equation (3) using any known method for integrating a differential equation subject to a single time condition. Once x(t) is obtained, the value of the useful objective function J is calculated using the useful objective 400 as represented by Equation (2).

The step 408 of the period formulation of the SDC algorithm 404 initializes program parameters such as P, Q, R, S, Y, W, and c as discussed in subsection 5 infra.

The step 409 in the SDC algorithm 404 integrates the static/dynamic control equations, i.e., Equations (32)-(40) infra, to obtain an update law. An update law is a prescription for updating values of v(t), w, and x(t), such as equations of update (50)-(52), which are discussed in subsection 5 infra. Obtaining an update law includes calculating parameters, such as α_(i), β_(i), and γ_(i) (i=1, 2, . . . , N), for use in equations of update.

The step 410 in FIG. 2 of the period formulation of the SDC algorithm 404 uses the update law obtained from the step 409 and the state equation 401 to compute updated values for v(t), w, and x(t). Once updated values for v(t), w, and x(t) are obtained, an updated value of J is calculated using the useful objective 400 as represented by Equation (2).

The step 411 in FIG. 2 of the SDC algorithm 404 tests for adequate improvement in the values of J. An improvement is adequate if the updated value of J has changed sufficiently from the value of J at the previous iteration. The adequacy of improvement test is mathematically articulated in Equation (53) infra. If the improvement is adequate, then the step 412, the convergence test as stated in subsection 5 infra, is executed. If the improvement is not adequate, then step 410 is repeated with an increasingly damped update law. The update laws are damped by decreasing the value of the parameter ε as described in subsection 5 infra.

The step 412 in FIG. 2 of the SDC algorithm 404 tests for convergence to the optimal values of v(t) and w. If convergence is obtained, then the procedure stops. If convergence is not obtained, then the values of v(t), w, and x(t) are replaced with the improved values obtained in the steps 410 and 411, followed by a return to the step 408.

By optimizing the useful objective function J, the SDC method of the present invention produces a useful, concrete, and tangible result. In particular, the useful objective may include a spacecraft objective, such as a spacecraft trajectory objective and a spacecraft design objective. Optimizing a spacecraft trajectory objective provides spacecraft design and control of a spacecraft trajectory, including a capability of optimizing such parameters as flyby sequence, launch date, flight duration, and spacecraft, velocity. Optimizing a spacecraft design objective facilitates design of such parameters as engine efficiency, engine size, propellant tank size, and electric battery size.

A useful objective may also include an objective related to groundwater or soil decontamination. An example of a useful objective function J is a measure of the contamination remaining in the ground after a certain period of time. The SDC process can be used to design and control a decontamination system to minimize the contamination present in the ground. The static parameter vector w may include the location and size of groundwater extraction wells and clean water injection wells, and treatment plant size. The dynamic control vector v(t) may include dynamic pumping schedules for all wells. Other remediation system design parameters which can be optimized include the size and location of vapor extraction equipment, bioremediation equipment, horizontal wells, and slurry walls.

Another application involving a useful objective includes stabilizing vibrations in structures. For example, a useful objective function J includes a measure of the amplitude of the vibrations. The SDC process can be used to design and control structures to minimize the amplitude of destructive vibrations. The dynamic control vector v(t) may include the effect of mechanical actuators to damp vibrations. The static parameter vector w may include the size and location of various fixed elements of the structure such as beams and trusses.

Another useful objective includes maximizing the value of a portfolio. For example, a useful objective function J includes the dollar value of a portfolio after a specified period of time. The SDC process can be used to design trading laws to maximize return to risk ratios. The dynamic control vector v(t) may include the effect of decisions to buy or sell equities. The static parameter vector w may include the fraction of the portfolio to be exposed to different levels of risk.

Another application relating to a useful objective includes electric circuit design. For example, a useful objective function J includes the circuit response time. The SDC process can be used to design and operate an electric circuit to minimize circuit response tine. The dynamic control vector v(t) may include the parameters associated with the circuit controller. The static parameter vector w may include maximum voltage and current tolerances, and bandwidth for various components of the circuit.

Another application relating to a useful objective includes the design and operation of a chemical reactor. For example, a useful objective function J includes the weight of the useful chemical products. The SDC process can be used to design and operate a chemical reactor in order to maximize the weight of the useful chemical products produced in the reactor. The dynamic control vector v(t) may include the inflow rate of raw chemicals into the reactor, thermostat settings, and pressure levels. The static parameter vector w may include the size of the reactor's chambers and the length of time the reactor is operated.

Another application relating to a useful objective includes the design and operation of a water reservoir system. For example, a useful objective function J includes the amount of hydroelectric power which can be generated by the release of reservoir water. The SDC process can be used to design and operate a system of reservoirs in order to maximize the amount of hydroelectric power produced by the reservoir system. The dynamic control vector v(t) may include the flow rate of water into and out of the reservoirs in the system. The static parameter vector w may include the size of hydroelectric generators to build and the capacity or dam height for each reservoir in the system.

B. Application of the Period Formulation of SDC to Spacecraft Optimization

To enable the present invention to be better understood, this subsection describes an application of the present invention directed to optimizing spacecraft design and trajectory. The spacecraft design and trajectory problem is merely illustrative of the types of spacecraft and general engineering problems to which Static/Dynamic Control can be applied.

A manner of applying the period formulation of the SDC process to spacecraft design and trajectory optimization involves choosing a useful objective 400 represented as: $\begin{matrix} {{J = {{\int_{w{\lbrack 1\rbrack}}^{{w{\lbrack 1\rbrack}} + {w{\lbrack 2\rbrack}}}{{F\left( {{x(t)},{v(t)},w,t} \right)}\quad {t}}} + {\sum\limits_{i = 1}^{N}\quad {G\left( {{x\left( t_{i} \right)},u_{i},w,t_{i},i} \right)}}}},} & (6) \end{matrix}$

where the scaler functions F and G are selected by the user of the invention to represent the spacecraft trajectory and design objectives. The system state vector x(t) contains at least six elements corresponding to the current spacecraft position and velocity. More state variables can be added if desired. An example of an additional state variable which may be appropriate is the current mass x(t)[7]=M_(s)(t) of the spacecraft. The dynamic control vector v(t) contains three components, one for each of the current x, y, and z components of thrust intensity or the extent and angular orientation of a solar sail. Defining v(t) in this way allows the spacecraft propulsion and trajectory to be optimized. Additional components of the dynamic control vector v(t) can be assigned to solar panel angle, spacecraft power consumption, etc. The static parameter vector w typically contains two components. The first, w[1], is the launch time or time t₀ when the trajectory to be optimized is started. The second component, w[2], is the trajectory time duration or flight time. These definitions of w[1] and w[2] result in optimizing both launch date and flight time. Additional components of the static parameter vector w may include, engine performance parameters, solar panel size, launch energy, etc.

FIG. 4 shows the flow chart of FIG. 1 for an example of how SDC can be applied to spacecraft design and trajectory optimization. In the example illustrated by FIG. 4, the useful objective 413 is the mass of fuel used for the mission. Minimizing the mass of fuel used maximizes the payload of the spacecraft. The useful objective function J for this example can be written $\begin{matrix} {J = {\int_{w{\lbrack 1\rbrack}}^{{w{\lbrack 1\rbrack}} + {w{\lbrack 2\rbrack}}}{\frac{{M_{s}(t)}}{t}{{t}.}}}} & (7) \end{matrix}$

In this case, $F = \frac{{M_{s}(t)}}{t}$

is the mass of fuel consumed per time and G is set to zero (i.e. G is not used.) The integral of F is the total mass of fuel consumed. Thus, by minimizing J, the total mass of fuel consumed is minimized.

The user of the invention may elect to limit the candidate spacecraft designs and trajectories by listing linear or nonlinear constraints 415 of the form of Equation (4). General examples of constraints 415 include a limit on how close a spacecraft is allowed to get to a planet or the sun, a maximum possible thrust intensity, a final destination, an intermediate destination, a maximum allowed flight time, an acceptable launch date range, a solar electric propulsion constraint, and a launch vehicle performance curve. For the example indicated by FIG. 4, the constraints 415 can be written,

x(w[1]+w[2])[1:3]−r _(Saturn)(w[1]+w[2])=0  (8)

w[1]−2001≧0  (9)

where r_(Saturn)(t) is the position of a target, such as Saturn, at time t and x(t)[1:3] (the first three components of x(t)) is the position of the spacecraft at time t. In this case, the function K=x(w[1]+w[2])[1:3]−r_(Saturn)(w[1]+w[2]) and the function L=w[1]−2001 in Equation (4).

In addition to providing a useful objective function 413 and constraints 415, a state equation 414 must be provided by the user of the invention in the form of Equation (3). The user of the invention must select appropriate vector functions T and Γ to properly represent the physics of the spacecraft problem. For the example indicated by FIG. 4, the user of the invention could define the state vector x(t) and the dynamic control vector v(t) as follows: $\begin{matrix} {\quad {x = {\begin{bmatrix} {x\lbrack 1\rbrack} \\ {x\lbrack 2\rbrack} \\ {x\lbrack 3\rbrack} \\ {x\lbrack 4\rbrack} \\ {x\lbrack 5\rbrack} \\ {x\lbrack 6\rbrack} \\ {x\lbrack 7\rbrack} \end{bmatrix} = \begin{bmatrix} {x\quad {coordinate}\quad {of}\quad {spacecraft}} \\ {y\quad {coordinate}\quad {of}\quad {spacecraft}} \\ {z\quad {coordinate}\quad {of}\quad {spacecraft}} \\ {x\quad {velocity}\quad {of}\quad {spacecraft}} \\ {y\quad {velocity}\quad {of}\quad {spacecraft}} \\ {z\quad {velocity}\quad {of}\quad {spacecraft}} \\ {M_{s}\quad {mass}\quad {of}\quad {the}\quad {spacecraft}} \end{bmatrix}}}\quad} & (10) \\ {v = {\begin{bmatrix} {v\lbrack 1\rbrack} \\ {v\lbrack 2\rbrack} \\ {v\lbrack 3\rbrack} \end{bmatrix} = \begin{bmatrix} {x\quad {component}\quad {of}\quad {thrust}} \\ {y\quad {component}\quad {of}\quad {thrust}} \\ {z\quad {component}\quad {of}\quad {thrust}} \end{bmatrix}}} & (11) \end{matrix}$

The state equation 414 for the example indicated by FIG. 4 is Newton's law of gravitation for m_(p) gravitating bodies. Thus the state equation 414 in the form of Equation (3) is $\begin{matrix} {\frac{x}{t} = {{T\quad \left( {x,v,w,t} \right)} = {\begin{bmatrix} {x\lbrack 4\rbrack} \\ {x\lbrack 5\rbrack} \\ {x\lbrack 6\rbrack} \\ {\frac{v\lbrack 1\rbrack}{x\lbrack 7\rbrack} + {U_{G}{\sum\limits_{i = 1}^{m_{p}}\quad \frac{M\quad (i)\quad r\quad {(i)\lbrack 1\rbrack}}{{{r\quad (i)}}^{3}}}}} \\ {\frac{v\lbrack 2\rbrack}{x\lbrack 7\rbrack} + {U_{G}{\sum\limits_{i = 1}^{m_{p}}\quad \frac{M\quad (i)\quad r\quad {(i)\lbrack 2\rbrack}}{{{r\quad (i)}}^{3}}}}} \\ {\frac{v\lbrack 3\rbrack}{x\lbrack 7\rbrack} + {U_{G}{\sum\limits_{i = 1}^{m_{p}}\quad \frac{M\quad (i)\quad r\quad {(i)\lbrack 3\rbrack}}{{{r\quad (i)}}^{3}}}}} \\ \frac{v}{g\quad I_{sp}} \end{bmatrix} = {{\begin{bmatrix} {x\quad {velocity}\quad {of}\quad {spacecraft}} \\ {y\quad {velocity}\quad {of}\quad {spacecraft}} \\ {z\quad {velocity}\quad {of}\quad {spacecraft}} \\ {x\quad {acceleration}\quad {of}\quad {spacecraft}} \\ {y\quad {acceleration}\quad {of}\quad {spacecraft}} \\ {z\quad {acceleration}\quad {of}\quad {spacecraft}} \\ {{rate}\quad {fuel}\quad {is}\quad {used}} \end{bmatrix},}}}}} & (12) \end{matrix}$

where U_(G) is the universal gravitational constant, M(i) is the mass of the i^(th) gravitating object or planet, r(i) is the x, y, and z components of the distance between the spacecraft and the i^(th) gravitating object or planet, g is the acceleration of gravity at the Earth's surface, and I_(sp) is the specific impulse of the spacecraft's engine. The product gI_(sp) is the exhaust velocity of the rocket engine.

The state equation (3) allows for the possibility that the initial (or alternately the terminal) state x(t=t₀) may be a function of the static parameter vector w. FIG. 4 provides an example when the initial state is a function of w. In this example, w[1] is defined to be the launch date from Earth. Thus, the initial spacecraft position and velocity is a function of where the Earth is in it's orbit around the Sun at the launch date w[1].

The user selected function T is not required to be continuous in time. This freedom allows the exact representation of different engine stages. An example is when an electric propulsion engine stage follows a chemical propulsion stage on a single spacecraft. In the example indicated by Equation (12), different engine stages could be represented by making I_(sp) a discontinuous function of time. Each engine type has a characteristic value of I_(sp).

In addition to providing the useful objective function 413, the state equation 414, and the constraints 415; the user of the invention may elect to include dynamic limitations 416 in the form of Equation (5). An example of a dynamic limitation is the time spacing between which navigational commands can be sent to control a spacecraft. For example, it may be possible to communicate with a spacecraft only once every ten days. Thus, the spacecraft thrust can only be changed once every ten days. For the example indicated by FIG. 4, the dynamic limitation 416 can be written, $\begin{matrix} {{v\quad (t)} = {\begin{matrix} u_{1} & {{{for}\quad t} = {t_{0}\quad {to}\quad t_{1}}} \\ u_{2} & {{{for}\quad t} = {t_{1}\quad {to}\quad t_{2}}} \\ \vdots & \vdots \\ u_{N} & {{{{for}\quad t} = {t_{N - 1}\quad {to}\quad t_{N}}},} \end{matrix}}} & (13) \end{matrix}$

where the period functions ƒ(u_(i), w, t)=u_(i).

Once a useful objective function, a state equation, and any constraints and/or dynamic limitations are provided. the SDC algorithm 404 generates the optimal spacecraft trajectory, spacecraft navigation command sequence, and/or spacecraft design parameters. For the example indicated by FIG. 4, the output 417 of the SDC process is an optimal launch date w[1], an optimal flight time w[2], and an optimal thrust sequence v(t) to reach a target such that the fuel use is minimized and the launch date is after the new year of 2001.

C. Numerical Examples of Spacecraft Optimization Using the Period Formulation

To provide further understanding of the present invention, two numerical examples of the SDC process applied to a simple spacecraft trajectory optimization problem are given in this subsection. The numerical examples are refinements of the example outlined in FIG. 4 discussed supra. Relatively simple examples are presented for clarity. Application of the SDC process is not limited to simple engineering problems.

The goal in both numerical examples is to generate optimal spacecraft launch dates, flight times, and thrust sequences to arrive at a target near the orbit of the planet Saturn. The objective is to minimize the amount of fuel required for the trip. The optimal launch date, flight time, and thrust sequence are defined to be those which require the least fuel. In the first example, the spacecraft is assumed to have a nuclear electric propulsion (NEP) engine. NEP engines are ion propulsion engines which operate on electricity produced by a nuclear fission reactor. In the second example, the spacecraft is assumed to have a solar electric propulsion (SEP) engine. SEP engines are ion propulsion engines which operate on electricity produced by solar cell arrays. Unlike NEP engines, SEP engines can only operate near the sun where solar cell arrays are efficient. SEP engines typically only operate out to about 25% of the distance from the sun to Saturn. SEP spacecraft must coast and additionally use the gravitational fields of planets during flybys to be accelerated to higher velocities to reach outer solar system destinations like Saturn.

In both numerical examples, the state vector x(t) is defined by Equation (10), the dynamic control vector v(t) by Equation (11), and the state equation by Equation (12). The x-axis is defined to be the line between the Sun and Earth at the instant of the launch. The y-axis lies in the ecliptic plane. The z-axis points in the direction of the solar system north pole completing a right handed rectangular coordinate system. The net gravitational effect of the sun and all nine planets in the solar system is accounted for. The spacecraft is assumed to have a single ion propulsion engine with a specific impulse (measure of engine efficiency) of I_(sp)=3300 seconds. The static parameter vector w is defined as, $\begin{matrix} {w = {\begin{bmatrix} {w\lbrack 1\rbrack} \\ {w\lbrack 2\rbrack} \end{bmatrix} = {\begin{bmatrix} {{launch}\quad {date}\quad ({year})} \\ {{total}\quad {flight}\quad {time}\quad ({year})} \end{bmatrix}.}}} & (14) \end{matrix}$

The “launch” or start of the space flight will occur from a near Earth solar orbit. The useful objective function defined by Equation (7) is used in both examples. The seventh component T[7] of the state equation (12) is the rate fuel is burned. Thus ${{T\lbrack 7\rbrack} = \frac{{M_{s}}\quad (t)}{t}},$

and the useful objective function (7) becomes $\begin{matrix} {J = {\int_{w{\lbrack 1\rbrack}}^{{w{\lbrack 1\rbrack}} + {w{\lbrack 2\rbrack}}}{\frac{v}{g\quad I_{sp}}\quad {{t}.}}}} & (15) \end{matrix}$

This form of the useful objective function explicitly indicates the dependence of F on the thrust vector v.

The constraints

K=x(w[1]+w[2])[1:3]−r _(Saturn)(w[1]+w[2])=0  (16)

L=w[1]−2001≧0  (17)

are used to require the spacecraft to reach a point 1 astronomical unit past Saturn by the end of the trajectory and to require the launch date to be after midnight Dec. 31, 2000.

In addition, the thrust magnitude is dynamically limited to be steady, allowing changes at N=100 evenly spaced intervals during the space flight. This dynamic limitation avoids calculated optimal thrust sequences v(t) which change continuously in time. This limitation reflects practical and mechanical constraints often present in spacecraft engines and control systems. Specifically $\begin{matrix} {{v\quad (t)} = {\begin{matrix} u_{1} & {{{for}\quad t} = {{w\lbrack 1\rbrack}\quad {to}\quad t_{1}}} \\ u_{2} & {{{for}\quad t} = {t_{1}\quad {to}\quad t_{2}}} \\ \vdots & \vdots \\ u_{N} & {{{{for}\quad t} = {{t_{N - 1}\quad {to}\quad {w\lbrack 1\rbrack}} + {w\lbrack 2\rbrack}}},} \end{matrix}}} & (18) \end{matrix}$

where the dynamic parameter vectors u_(i)εR³ are optimized by the period formulation of the SDC process. No limitation or constraints are placed on the spacecraft trajectory that require the spacecraft to use any preprescribed flyby sequence to get to Saturn. The SDC process is allowed to select any flyby sequence.

EXAMPLE 1 Nuclear Electric Propulsion

Equations (15), (12), (16)-(17), and (18) provide the useful objective function 413, the state equation 414, the constraints 415, and the dynamic limitations 416 respectively for the NEP example. The period formulation of the Static/dynamic algorithm 404 is used to generate the optimal NEP launch date, flight time, and spacecraft trajectory.

The first step 406 in FIG. 2 of the Static/dynamic algorithm 404 incorporates the constraint equations (16)-(17) into the useful objective function J and incorporates the dynamic limitation equation (18) into the period functions ƒ. The dynamic limitation equation (18) can be incorporated in period functions ƒ by defining,

ƒ(u _(i) , w, t, i)=u _(i) for i=1, 2, . . . , N.  (19)

The constraint equations (16) and (17) can be incorporated into the objective J using twice differentiable penalty functions. For example, the function G in the general objective equation (2) can be defined, $\begin{matrix} {{G\quad \left( {{x\quad \left( t_{N} \right)},u_{N},w,t_{N},N} \right)} = {\begin{Bmatrix} {c_{l}{L^{t} \cdot L}} & {{{when}\quad L} < 0} \\ 0 & {{{when}\quad L} \geq 0} \end{Bmatrix} + {c_{d}{K^{t} \cdot K}}}} & (20) \end{matrix}$

 G(x(t _(N)), u _(N) , w, t _(N) , i)=0 i≠N  (21)

where c_(l) and c_(d) are scaler, positive penalty function weights. The penalty weights c_(l) and c_(d) are increased and the problem is resolved until no significant change in the optimal trajectory occurs with increasing values for c_(l) and c_(d). Note that any standard method for handling constraints can be used. The penalty function method is probably the simplest, and is often adequate. The useful objective with the constraints incorporated is $\begin{matrix} {J = {{\int_{w{\lbrack 1\rbrack}}^{{w{\lbrack 1\rbrack}} + {w{\lbrack 2\rbrack}}}{\frac{v}{g\quad I_{sp}}\quad {{t}.{+ \begin{Bmatrix} {c_{l}{L^{t} \cdot L}} & {{{when}\quad L} < 0} \\ 0 & {{{when}\quad L} \geq 0} \end{Bmatrix}}}}} + {c_{d}{K^{t} \cdot K}}}} & (22) \end{matrix}$

The second step 407 in the SDC algorithm 404 in FIG. 2 is to provide arbitrary initial approximations for v(t) and w. The initial approximations of v(t) and w are used with the state equation (12) to compute x(t). Once x(t) is obtained, the useful objective value of J is calculated using the objective equation (22). To demonstrate the robustness of the SDC algorithm, the initial approximation of v(t) was set to zero for all times, $\begin{matrix} {{v\quad (t)} = {{\begin{Bmatrix} 0 \\ 0 \\ 0 \end{Bmatrix}\quad {for}\quad t} = {{{w\lbrack 1\rbrack}\quad {to}\quad {w\lbrack 1\rbrack}} + {{w\lbrack 2\rbrack}.}}}} & (23) \end{matrix}$

The initial iteration values for the launch date w[1] and flight time w[2] were arbitrarily chosen to be 12:00 am Jan. 1, 2014 and 3.25 years respectively. The initial values for v(t) and w result in the spacecraft never leaving the Earth's vicinity in its three year “flight” (the spacecraft never reaches Saturn!) The thrust sequence, Equation (23), is obviously quite poor. This example demonstrates that the SDC process is highly robust because it can be started with very poor first iteration values for v(t) and w. FIG. 5 is a plot of the first iteration spacecraft trajectory resulting from the first iteration values of v(t) and w.

The remainder of step 407 and steps 408 through 412 of the SDC algorithm 404 in FIG. 2 were implemented using SDC software on a desktop workstation. The precise algorithmic steps followed by the computer are given in subsection 5 entitled “The Steps of the SDC Algorithm For the Period Formulation.” The normalized time substitution was used which is described in detail in subsection 6 entitled “The Normalized Time Substitution.” The required number of iterations of the loop terminating in step 412 of FIG. 2 was 1589.

FIG. 6 is a plot of the optimal NEP trajectory obtained after convergence. FIG. 6 demonstrates a novel aspect of the present invention: the SDC process can identify and optimize spacecraft flybys without having the flybys prespecified. No other method for optimizing spacecraft trajectories is presently capable of doing this. As shown in FIG. 6, the SDC process identified and optimized two flybys. The first is a flyby of the planet Jupiter, which imparts kinetic energy to the spacecraft to accelerate the spacecraft toward the orbit of Saturn, thereby saving fuel. The second flyby is of the planet Saturn. The converged closest approach to Jupiter is 2.632×10⁶ km. The converged closest approach to Saturn is 1.463×10⁶ km. The optimal launch date (w[1]) is at 17:47:24 on Jan. 23 of the year 2012. The optimal flight time (w[2]) is 10.296 years.

FIG. 7 is a plot of the optimal thrust sequence and the velocity magnitude corresponding to the trajectory plotted in FIG. 6. The plot of thrust is given as a bar plot to emphasize that the thrust is fixed during each of the 100 periods conforming to the dynamic limitation equation (18). The thrust in the z direction does not rise substantially above zero milli-newtons on the scale of the thrust plot in FIG. 7. The magnitude of the vector sum of the x, y, and z thrusts is plotted as a staircase like line in the upper half of the thrust graph. The optimal payload fraction for this example is 64.213%. Thus 35.787% of the initial spacecraft mass must be fuel. The payload result can be scaled to any size spacecraft. The velocity magnitude plot in FIG. 7 shows the velocity gains from the Jupiter flyby around the end of year 2018 and from the Saturn flyby near year 2022. These velocity gains result in substantially less fuel being required for the trip. The calculations for Example 1, comprising 1589 iterations, were performed in 113.5 minutes on a SUN Ultra workstation.

EXAMPLE 2 Solar Electric Propulsion

For simplicity, Example 2 will consider the same basic problem as for the NEP case of Example 1, except that SEP engines are used instead of EP engines. Unlike NEP engines, SEP engines cannot operate beyond about 2.6 astronomical units from the sun. The target is at about 10.4 astronomical units. In order to fly SEP spacecraft beyond 2.6 astronomical units, enough kinetic energy has to be transferred to the spacecraft inside of the 2.6 astronomical unit limit. In addition, flyby assists are necessary to increase speed outside the 2.6 astronomical unit limit. This problem is significantly more difficult to solve than the NEP problem in Example 1.

The SEP engine cut-off distance introduces a new constraint on the thrust, which can be written

Trmax(r*)−∥v∥≧0,  (24)

where r* is the current distance between the spacecraft and the sun and Trmax(r*) is the maximum possible thrust which can be attained using solar energy at distance r*. A plot of the shape of Trmax(r*) used in this example is given in FIG. 8. Notice that the maximum allowed thrust Trmax(r*) drops to zero after 2.6 astronomical units.

In this example, the vector L of Equation (4) has two components $\begin{matrix} {L = {\begin{Bmatrix} {{w\lbrack 1\rbrack} - 2001} \\ {{{Trmax}\left( r_{*} \right)} - {v}} \end{Bmatrix} \geq {\begin{Bmatrix} 0 \\ 0 \end{Bmatrix}.}}} & (25) \end{matrix}$

The definition of L in Equation (25) will constrain the launch date w[1] and the thrust v(t) simultaneously.

Equations (15); (12); (16) and (25); and (18) provide the useful objective function 413, the state equation 414, the constraints 415, and dynamic limitations 416 respectively for the SEP example (see FIG. 4). The Static/dynamic algorithm 404 was used to generate the optimal SEP spacecraft trajectory.

The first step 406 of the Static/dynamic algorithm 404 incorporates the Equations (16) and (25) into the useful objective function J and incorporates Equation (18) into period functions ƒ. The same approach used for the NEP case of example 1 is used here. The result is given by Equations (19), (20), and (22).

The second step 407 in the SDC algorithm 404 of FIG. 4 provides arbitrary initial approximations for v(t) and w. Then the initial approximations of v)(t) and w, and the state equation (12) are used to compute x(t). Once x(t) is obtained, the useful objective value J is calculated using the objective equation (22). To again demonstrate the robustness of the SDC algorithm, the initial value of v(t) was set to zero for all times, $\begin{matrix} {{v(t)} = {{\begin{Bmatrix} 0 \\ 0 \\ 0 \end{Bmatrix}\quad {for}\quad t} = {{{w\lbrack 1\rbrack}\quad {to}\quad {w\lbrack 1\rbrack}} + {{w\lbrack 2\rbrack}.}}}} & (26) \end{matrix}$

The initial values for the launch date w[1] and flight time w[2] were arbitrarily chosen to be 12:00 am Jan. 1, 2014 and 3.25 years respectively. The initial values for v(t) and w result in the spacecraft never leaving the Earth's vicinity in its three year “flight” because the engine is never turned on. FIG. 5 is plot of the first iteration spacecraft trajectory resulting from the initial values of v(t) and w.

The remainder of step 407 and steps 408 through 412 of the SDC algorithm 404 were implemented using SDC software on a desktop workstation. The precise algorithmic steps followed by the computer are given in subsection 5 entitled “The Steps of the SDC Algorithm For the Period Formulation.” The normalized time substitution was used which is described in detail in subsection 6 entitled “The Normalized Time Substitution.” The required number of iterations of the loop terminating in step 412 of FIG. 2 was 1941.

FIG. 9 is a plot of the optimal SEP trajectory obtained after convergence. FIG. 9 demonstrates a novel aspect of the present invention: the SDC process can identify and optimize spacecraft flybys without having the flybys prespecified even when an SEP thrust constraint is in effect. No other method for optimizing spacecraft trajectories is presently capable of doing this. As shown in FIG. 9, the SDC process identified and optimized two flybys. The first is a flyby of the planet Jupiter, which imparts kinetic energy to the spacecraft to accelerate the spacecraft toward the orbit of Saturn, thereby saving fuel. The second flyby is of the planet Saturn which results in a slow down to reach the final target 1 astronomical unit outside the orbit of Saturn. The converged closest approach to Jupiter is 1.717×10⁶ km. The converged closest approach to Saturn is 1.153×10⁶ km. The optimal launch date (w[1]) is at 05:43:08 on Apr. 16 of the year 2012. The optimal flight time (w[2]) is 10.190 years.

FIG. 10 is a plot of the optimal thrust sequence and the velocity magnitude corresponding to the trajectory plotted in FIG. 9 for a 1040 kg initial weight spacecraft. The thrust in the z direction does not rise substantially above zero milli-newtons on the scale of the thrust plot in FIG. 10. Note that the engine is essentially shut down around year 2017 when the spacecraft exceeds the 2.6 astronomical unit distance. The optimal payload fraction for this example is 62.792%. Thus 37.208% of the initial spacecraft mass must be fuel. The velocity magnitude plot in FIG. 10 shows the velocity changes from the Jupiter flyby around the middle of year 2018 and the Saturn flyby near year 2022.

Note that despite the difficulty of sending an SEP spacecraft to a target beyond Saturn, the SDC process identified a trajectory that is similar to, and nearly as efficient, as the NEP trajectory in FIG. 6. In addition, the SDC process was started with a zero thrust initial trajectory. This demonstrates the power of the SDC process. The calculations for Example 2, comprising 1941 iterations, were performed in 141.3 minutes on a SUN Ultra workstation.

It should be understood that the present invention can be applied to virtually any spacecraft design and trajectory problem, which can differ substantially from the examples given in this subsection. While the examples given in this subsection may require certain variables, objectives and constraints, to be considered, other situations may require other variables, objectives, and constraints, in addition to, and/or in place of, those that are discussed. A detailed description of the static/dynamic control (SDC) algorithm for the period formulation is provided below. The fully continuous form of the SDC algorithm is provided in Appendix B.

4. The SDC Algorithm For the Period Formulation

The period formulation of the SDC algorithm is designed to solve problems of the following general form.

Algorithm Parameters

N=number of periods

n=dimension of the state vector x(t)

m=dimension of the dynamic parameter Vectors u_(i) (i=0, 1, . . . , N)

m′=dimension of the dynamic control vector v(t)

l=dimension of the static parameter vector w

t_(i)=(i=0, 1, . . . , N) times marking divisions between periods

General Formulation

Given a user specified useful objective function of the form, $\begin{matrix} {{{J\left( {u_{1},u_{2},\ldots \quad,u_{N},w} \right)} = {{\int_{t_{0}}^{t_{N}}{{F\left( {{x(t)},{v(t)},w,t} \right)}{t}}} + {\sum\limits_{i = 1}^{N}{G\left( {{x\left( t_{i} \right)},u_{i},w,t_{i},i} \right)}}}},} & (27) \end{matrix}$

where either of t₀<t_(N) and t₀>t_(N) is permitted. The period formulation of the present invention finds dynamic parameter vectors u₁, u₂, . . . , u_(N), and static parameter vector w such that J is minimized (or analogously maximized),

J*=min_(u,w) J(u ₁ , u ₂ , . . . , u _(N) , w).  (28)

The minimization (or maximization) is subject to a user specified state equation: $\begin{matrix} {\frac{{x(t)}}{t} = {{{T\left( {{x(t)},{v(t)},w,t} \right)}\quad {x\left( {t = t_{0}} \right)}} = {{\Gamma (w)}.}}} & (29) \end{matrix}$

The dynamic control vector, v(t)εR^(m′), is dynamically limited to be a parametric function of time over each of N specified time intervals called “periods:” $\begin{matrix} {{v(t)} = \begin{Bmatrix} {f\left( {u_{1},w,t,1} \right)} & {{{for}\quad t} = {t_{0}\quad {to}\quad t_{1}}} \\ {f\left( {u_{2},w,t,2} \right)} & {{{for}\quad t} = {t_{1}\quad {to}\quad t_{2}}} \\ \vdots & \vdots \\ {f\left( {u_{N},w,t,N} \right)} & {{{for}\quad t} = {t_{N - 1}\quad {to}\quad {t_{N}.}}} \end{Bmatrix}} & (30) \end{matrix}$

The dynamic control vector v(t) is a piece-wise continuous vector function of time defining the dynamic control values at each time instant. The value of v(t) may change discontinuously at period interfaces t₁, t₂, t₃, . . . , t_(N−1). The functions ƒ(u_(i), w, t, i)εR^(m′), i=1, 2, . . . , N are parameterized by u_(i)εR^(m) and wεR^(l). The “dynamic parameter vector” for the i^(th) period is defined to be the vector of parameters u_(i). The time intervals (t_(i−1), t_(i)), i=1, 2, . . . , N and the number of periods N may be chosen arbitrarily. The elements of the static parameter vector w are fixed-in-time decision variables (i.e. non-dynamic). This formulation requires that both classes of variables, time changing (dynamic) variables and fixed-in-time (static) variables, are optimized simultaneously. The system state at time t₀, Γ(w)εR^(n) is assumed to be a continuously differentiable function of the static parameter vector w.

The state vector x(t)εR^(n) is a continuous function of time. It is assumed that the user selected functions ƒεR^(m′); F and GεR; and TεR^(n) are continuously differentiable with respect to state vector x and the parameter vectors u_(i) and w. The functions ƒ, F, and T may be discontinuous functions of time t.

In addition, the user may define linear or nonlinear constraints of the form:

L(x(t), v(t), w, t),≧0 and/or K(x(t), v(t), w, t)=0.  (31)

Equation (31) constitute constraints relating x(t), v(t), w, and t. Any such constraint may be in the form of a constraint on a subset of x(t), v(t), w, and t. An example of such a constraint is a relationship between v(t) and t, such as v(t)≦At where A is a specified constant. Another example is a condition on v(t) alone, such as v(t)<v_(max) where v_(max) is a specified constant.

5. The Steps of the SDC Algorithm For the Period Formulation

This subsection outlines the steps for implementing the SDC algorithm for the period formulation. The theoretical basis for the period formulation is presented in subsection 7.

With reference to FIG. 2, Step 406 incorporates the constraint equations (31) into the objective function (27) using a twice differentiable penalty function or other standard constraint method. Next, the dynamic limitations, if present, are incorporated into period functions ƒ.

Step 407 provides an initial (arbitrary) value for the dynamic parameter vectors u₁, u₂, . . . , u_(N), and the static parameter vector w. The initial values are denoted as {overscore (u)}₁, {overscore (u)}₂, . . . , {overscore (u)}_(N), and {overscore (w)}. Next, the time evolution of the state vector x(t), subject to x(t=t₀)=Γ(w), is calculated using {overscore (u)}₁, {overscore (u)}₂, . . . , {overscore (u)}_(N), and {overscore (w)} by integrating the state equation (29). The resulting state vector is denoted {overscore (x)}(t). The useful objective value J({overscore (u)}₁, {overscore (u)}₂, . . . , {overscore (u)}_(N), {overscore (w)}) is calculated using Equation (27). The resulting objective value is denoted {overscore (J)}.

Step 408 initializes the program parameters P=0^(n×n), Q=0^(n×1), ΔR=0, S=0^(l×1), Y=0^(n×l), W=0^(l×l), and ε=1.

Step 409 completes the following calculation for i=N, N−1, N−2, . . . , 1 comprising a first substep followed by a second substep. Since period N encompasses times between t_(N−1) and t_(N), and since period 1 encompasses times between t₀ an t₁, the calculations of step 409 proceed backward in time if t₀<t_(N) and forward in time if t₀>t_(N).

The first substep of step 409 is the integration of the system of coupled ordinary differential equations (32)-(40) from t=t_(i) to t=t_(i−1) using the condition equations (41)-(49). The integration results in J_(x)(t_(i−1)), J_(u)(t_(i−1)), J_(w)(t_(i−1)), J_(xx)(t_(i−1)), J_(xu)(t_(i−1)), J_(xw)(t_(i−1)), J_(uu)(t_(i−1)), J_(wu)(t_(i−1)), and J_(ww)(t_(i−1)).

{overscore ({dot over (J)})} _(x) =−F _(x) −T _(x) ^(t) {overscore (J)} _(x)  (32)

{overscore ({dot over (J)})} _(u) =−F _(u) −T _(u) ^(t) {overscore (J)} _(x)  (33)

{overscore ({dot over (J)})} _(w) =−F _(w) −T _(w) ^(t) {overscore (J)} _(x)  (34)

$\begin{matrix} {{\overset{\overset{.}{\_}}{J}}_{xx} = {{- F_{xx}} - {{\overset{\_}{J}}_{xx}T_{x}} - {T_{x}^{t}{\overset{\_}{J}}_{xx}} - {\sum\limits_{k = 1}^{n}{{{\overset{\_}{J}}_{x}\lbrack k\rbrack}{T_{xx}\left\lbrack {k,{:{,:}}} \right\rbrack}}}}} & (35) \\ {{\overset{\overset{.}{\_}}{J}}_{xu} = {{- F_{xu}} - {{\overset{\_}{J}}_{xx}T_{u}} - {T_{x}^{t}{\overset{\_}{J}}_{xu}} - {\sum\limits_{k = 1}^{n}{{{\overset{\_}{J}}_{x}\lbrack k\rbrack}{T_{xu}\left\lbrack {k,{:{,:}}} \right\rbrack}}}}} & (36) \\ {{\overset{\overset{.}{\_}}{J}}_{xw} = {{- F_{xw}} - {{\overset{\_}{J}}_{xx}T_{w}} - {T_{x}^{t}{\overset{\_}{J}}_{xw}} - {\sum\limits_{k = 1}^{n}{{{\overset{\_}{J}}_{x}\lbrack k\rbrack}{T_{xw}\left\lbrack {k,{:{,:}}} \right\rbrack}}}}} & (37) \\ {{\overset{\overset{.}{\_}}{J}}_{uu} = {{- F_{uu}} - {{\overset{\_}{J}}_{xu}^{t}T_{u}} - {T_{u}^{t}{\overset{\_}{J}}_{xu}} - {\sum\limits_{k = 1}^{n}{{{\overset{\_}{J}}_{x}\lbrack k\rbrack}{T_{uu}\left\lbrack {k,{:{,:}}} \right\rbrack}}}}} & (38) \\ {{\overset{\overset{.}{\_}}{J}}_{wu} = {{- F_{wu}} - {{\overset{\_}{J}}_{xw}^{t}T_{u}} - {T_{w}^{t}{\overset{\_}{J}}_{xu}} - {\sum\limits_{k = 1}^{n}{{{\overset{\_}{J}}_{x}\lbrack k\rbrack}{T_{wu}\left\lbrack {k,{:{,:}}} \right\rbrack}}}}} & (39) \\ {{\overset{\overset{.}{\_}}{J}}_{ww} = {{- F_{ww}} - {{\overset{\_}{J}}_{xw}^{t}T_{w}} - {T_{w}^{t}{\overset{\_}{J}}_{xw}} - {\sum\limits_{k = 1}^{n}{{{\overset{\_}{J}}_{x}\lbrack k\rbrack}{T_{ww}\left\lbrack {k,{:{,:}}} \right\rbrack}}}}} & (40) \end{matrix}$

Equations (32)-(40) are respectively subject to the conditions at time t_(i):

{overscore (J)} _(x)(t _(i))=G _(x)({overscore (x)}(t _(i)), {overscore (u)} _(i) , {overscore (w)}, t _(i))+Q  (41)

{overscore (J)} _(u)(t _(i))=G _(u)({overscore (x)}(t _(i)), {overscore (u)} _(i) , {overscore (w)}, t _(i))  (42)

{overscore (J)} _(w)(t _(i))=G _(w)({overscore (x)}(t _(i)), {overscore (u)} _(i) , {overscore (w)}, t _(i))+S  (43)

{overscore (J)} _(xx)(t _(i))=G _(xx)({overscore (x)}(t _(i)), {overscore (u)} _(i) , {overscore (w)}, t _(i))+P  (44)

{overscore (J)} _(xu)(t _(i))=G _(xu)({overscore (x)}(t _(i)), {overscore (u)} _(i) , {overscore (w)}, t _(i))  (45)

{overscore (J)} _(xw)(t _(i))=G _(xw)({overscore (x)}(t _(i)), {overscore (u)} _(i) , {overscore (w)}, t _(i))+Y  (46)

{overscore (J)} _(uu)(t _(i))=G _(uu)({overscore (x)}(t _(i)), {overscore (u)} _(i) , {overscore (w)}, t _(i))  (47)

{overscore (J)} _(wu)(t _(i))=G _(wu)({overscore (x)}(t _(i)), {overscore (u)} _(i) , {overscore (w)}, t _(i))  (48)

{overscore (J)} _(ww)(t _(i))=G _(ww)({overscore (x)}(t _(i)), {overscore (u)} _(i) , {overscore (w)}, t _(i))+W  (49)

where {overscore (J)}_(x)(t)εR^(n), {overscore (J)}_(u)(t)εR^(m), {overscore (J)}_(w)(t)εR^(l), {overscore (J)}_(xx)(t)εR^(n×n), {overscore (J)}_(xu)(t)εR^(n×m), {overscore (J)}_(xw)(t)εR^(n×l), {overscore (J)}_(wu)(t)εR^(l×m), {overscore (J)}_(ww)(t)εR^(l×l), and {overscore (J)}_(uu)(t)εR^(m×m). The superscript t indicates the transpose operation. All derivatives of F, G, and T in Equations (32)-(49) are evaluated using {overscore (x)}(t), {overscore (u)}_(i), and {overscore (w)} and can be evaluated either analytically or numerically. The condition equations (41), (42), . . . , and (49) apply to Equations (32), (33), . . . , and (40) respectively.

The second substep of step 409 is implemented as follows. If i≧2, then the results of the integration of Equations (32)-(40) are used to evaluate and store:

α_(i) =−{overscore (J)} _(uu) ⁻¹(t _(i−1)){overscore (J)} _(u)(t _(i−1))

β_(i) =−{overscore (J)} _(uu) ⁻¹(t _(i−1)){overscore (J)} _(xu) ^(t)(t _(i−1))

γ_(i) =−{overscore (J)} _(uu) ⁻¹(t _(i−1)){overscore (J)} _(wu) ^(t)(t _(i−1)).

Additionally, the values of ΔR, P, Q, S, W, and Y are replaced according to:

ΔR=ΔR+{overscore (J)} _(u) ^(t)(t _(i−1)){overscore (J)} _(uu) ⁻¹(t _(i−1)){overscore (J)} _(u)(t _(i−1))=ΔR−{overscore (J)} _(u) ^(t)(t _(i−1))α_(i)

P={overscore (J)} _(xx)(t _(i−1))−{overscore (J)} _(xu)(t _(i−1)){overscore (J)} _(uu) ⁻¹(t _(i−1)){overscore (J)} _(xu) ^(t)(t _(i−1))={overscore (J)} _(xx)(t _(i−1))+{overscore (J)} _(xu)(t _(i−1))β_(i)

Q={overscore (J)} _(x)(t _(i−1))−{overscore (J)} _(xu)(t _(i−1)){overscore (J)} _(uu) ⁻¹(t _(i−1)){overscore (J)} _(u)(t _(i−1))={overscore (J)} _(x)(t _(i−1))+β_(i) ^(t) {overscore (J)} _(u)(t _(i−1))

S={overscore (J)} _(w)(t _(i−1))−{overscore (J)} _(wu)(t _(i−1)){overscore (J)} _(uu) ⁻¹(t _(i−1)){overscore (J)} _(u)(t _(i−1))={overscore (J)} _(w)(t _(i−1))+γ_(i) ^(t) {overscore (J)} _(u)(t _(i−1))

W={overscore (J)} _(ww)(t _(i−1))−{overscore (J)} _(wu)(t _(i−1)){overscore (J)} _(uu) ⁻¹(t _(i−1)){overscore (J)} _(wu) ^(t)(t _(i−1))={overscore (J)} _(ww)(t _(i−1))+{overscore (J)} _(wu)(t _(i−1))γ_(i)

Y={overscore (J)} _(xw)(t _(i−1))−{overscore (J)} _(xu) ⁻¹(t _(i−1)){overscore (J)} _(uu) ⁻¹(t _(i−1)){overscore (J)} _(wu) ^(t)(t _(i−1))={overscore (J)} _(xw)(t _(i−1))+β_(i) ^(t) {overscore (J)} _(wu) ^(t)(t _(i−1))

If i=1 then the results of the integration of Equations (32)-(40) are used to evaluate and store: ${\alpha_{1} = {\left( {{{\overset{\_}{J}}_{uu}\left( t_{0} \right)} - {{{\overset{\overset{\sim}{\_}}{J}}_{wu}^{t}\left( t_{0} \right)}{{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}\left( t_{0} \right)}{{\overset{\overset{\sim}{\_}}{J}}_{wu}\left( t_{0} \right)}}} \right)^{- 1}\left( {{{{\overset{\overset{\sim}{\_}}{J}}_{wu}^{t}\left( t_{0} \right)}{{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}\left( t_{0} \right)}{{\overset{\overset{\sim}{\_}}{J}}_{w}\left( t_{0} \right)}} - {{\overset{\overset{\sim}{\_}}{J}}_{u}\left( t_{0} \right)}} \right)}},{\xi = {{- {{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}\left( t_{0} \right)}}{\left( {{{\overset{\overset{\sim}{\_}}{J}}_{w}\left( t_{0} \right)} + {{{\overset{\_}{J}}_{wu}\left( t_{0} \right)}\alpha_{1}}} \right).}}}$

and the value of ΔR is replaced according to: ${\Delta \quad R} = {{\Delta \quad R} + {{{\overset{\overset{\sim}{\_}}{J}}_{w}^{t}\left( t_{0} \right)}{{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}\left( t_{0} \right)}{{\overset{\overset{\sim}{\_}}{J}}_{w}\left( t_{0} \right)}} + {\left( {{{{\overset{\overset{\sim}{\_}}{J}}_{w}^{t}\left( t_{0} \right)}{{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}\left( t_{0} \right)}{{\overset{\overset{\sim}{\_}}{J}}_{wu}\left( t_{0} \right)}} - {{\overset{\_}{J}}_{u}^{t}\left( t_{0} \right)}} \right)\alpha_{1}}}$

where ${\overset{\overset{\sim}{\_}}{J}}_{w}^{t}\overset{.}{=}{{{{\overset{\_}{J}}_{x}^{t}\left( t_{0} \right)}{\overset{\_}{\Gamma}}_{w}} + {{\overset{\_}{J}}_{w}^{t}\left( t_{0} \right)}}$ ${\overset{\overset{\sim}{\_}}{J}}_{ww}\overset{.}{=}{{2{{\overset{\_}{J}}_{x}^{t}\left( t_{0} \right)}{\overset{\_}{\Gamma}}_{ww}} + {{\overset{\_}{\Gamma}}_{w}^{t}{{\overset{\_}{J}}_{xx}\left( t_{0} \right)}{\overset{\_}{\Gamma}}_{w}} + {{\overset{\_}{J}}_{ww}\left( t_{0} \right)} + {{\overset{\_}{\Gamma}}_{w}^{t}{{\overset{\_}{J}}_{xw}\left( t_{0} \right)}} + {{{\overset{\_}{J}}_{xw}^{t}\left( t_{0} \right)}{\overset{\_}{\Gamma}}_{w}}}$ ${\overset{\overset{\sim}{\_}}{J}}_{wu}\overset{.}{=}{{{\overset{\_}{\Gamma}}_{w}^{t}{{\overset{\_}{J}}_{xu}\left( t_{0} \right)}} + {{{\overset{\_}{J}}_{wu}\left( t_{0} \right)}.}}$

Step 410 is the calculation of the updated static and dynamic parameter vectors, w and v(t), and the corresponding state vector x(t) for each time period in the time order of time periods 1, 2, . . . , j, . . . , N as follows: For j=1, the updated dynamic and static parameter vectors, u₁ and w, are respectively calculated via:

u ₁ ={overscore (u)} ₁+εα₁  (50)

w={overscore (w)}+εξ.  (51)

The resulting values u₁, w and the updated state x(t₀)=Γ(w) are used to integrate the state equation (29) from t₀ to t₁. For j=2, 3, . . . , N the updated dynamic parameter vector u_(j) is calculated using:

u _(j) ={overscore (u)} _(j)+εα_(j)+β_(j)(x(t _(j−1))−{overscore (x)}(t _(j−1)))+εγ_(j)ξ  (52)

The resulting value of u_(j) is used to integrate the state equation (29) from t_(j−1) to t_(j).

Concurrently with Step 410, the useful objective function (27) is evaluated using the updated control. The resulting objective value is denoted J(ε).

Step 411 is a comparison of the useful objective value J(ε) with the useful objective value {overscore (J)}. If there is satisfactory change, the values of the variables {overscore (J)}, {overscore (u)}, {overscore (w)}, and {overscore (x)}(t) are respectively replaced by the values of J(ε), u, w, and x(t). A satisfactory change is a satisfactory reduction to J(ε) if J is to be minimized. A satisfactory change is a satisfactory increase to J(ε) if J is to be maximized. If there is not a satisfactory change, then ε is reduced and Step 410 is repeated. For example, ε can be reduced by one half. A satisfactory reduction criterion for minimization that can be used is: $\begin{matrix} {{\overset{\_}{J} - {J(\varepsilon)}} \geq {\frac{1}{2}\left( {\frac{\varepsilon^{2}}{2} - \varepsilon} \right)\Delta \quad R}} & (53) \end{matrix}$

A satisfactory increase criterion for maximization that can be used is: $\begin{matrix} {{{J(\varepsilon)} - \overset{\_}{J}} \geq {{- \frac{1}{2}}\left( {\frac{\varepsilon^{2}}{2} - \varepsilon} \right)\Delta \quad R}} & (54) \end{matrix}$

The criteria (53) and (54) are simply requirements that the observed improvement in the useful objective be at least half the improvement that is expected if the problem were exactly quadratic (see subsection 8 titled “The Expected Quadratic Change for the Period Formulation”).

Step 412 is a test for convergence. If convergence is achieved, then the calculation ends. If convergence is not yet achieved, the Steps 408, 409, 410, and 411 are repeated. A convergence test that can be used is: convergence is achieved if the update law equations (50)-(52) with ε=1 result in 1) a change in the objective that is very small (i.e., within a specified tolerance) and is nearly equal to −½ΔR, and 2) {tilde over (J)}_(ww)(t₀); J_(uu)(t_(i)) for i=0, 2, 3, . . . , N−1; and ${{\overset{\_}{J}}_{uu}\quad \left( t_{0} \right)} - {{\overset{\sim}{{\overset{\_}{J}}^{t}}}_{wu}\quad \left( t_{0} \right){\overset{\_}{J}}_{ww}^{- 1}\quad \left( t_{0} \right){\overset{\sim}{\overset{\_}{J}}}_{wu}\quad \left( t_{0} \right)}$

are all positive definite for minimization or all negative definite for maximization. This convergence test satisfies the necessary and sufficient conditions of optimality. Note, also, that when any of the above arc not positive definite (or negative definite for maximization), a variation of the well known Trust Region method or shifting method can be used.

6. The Normalized Time Substitution

This subsection presents a method to solve dynamic optimization problems with variable beginning and ending times and variable time horizons. The goal is to optimize the trajectory simultaneously with optimizing the time t₀, and length of time |t_(N)−t₀| used for the trajectory. The time t₀ is the initial time if t₀<t_(N) or it is the final time if t₀>t_(N). The general method presented here was originally developed for the specific problem of space flight trajectory optimization but is applicable to general physical problems. The method developed here uses the strengths of the SDC algorithm to simultaneously optimize static and dynamic variables.

It is not immediately possible for SDC to optimize the start-time and the time-horizon. The SDC algorithm requires a fixed start and end to the integration. A further complication is that if the time-horizon t_(N) t₀ to changes, then individual periods (t_(i−1), t_(i)) must also change in length. In particular, the relationships t_(i−1)<t_(i) is must be maintained if t_(N)>t₀ or the relationships t_(i−1)>t_(i) must be maintained if t_(N)<t₀. The method in this subsection assumes that as the time-horizon t_(N) to t₀ changes in size, the sizes of the individual periods t_(i) to t_(i−1) change such that t_(i)−t_(i−1)/t_(N)−t₀ remains constant. For example, if |t_(N)−t₀| is halved, then each period is halved. This method guarantees that the relationships t_(i−1)<t_(i) or, alternately, t_(i−1)>t_(i) are maintained. It is easy to generalize the method given in this subsection to optimize the time-duration of all periods (t_(i−1), t_(i)) simultaneously by assigning a component of w or u_(i) to each period.

The normalized time substitution addresses the following general problem: $\begin{matrix} {{J^{*} = {{\min\limits_{u_{i},w}J} = {{\min\limits_{u_{i},w}{\int_{w{\lbrack 1\rbrack}}^{{w{\lbrack 1\rbrack}} + {w{\lbrack 2\rbrack}}}{F\quad \left( {{x\quad (t)},{v\quad (t)},w,t} \right)\quad {t}}}} + {\sum\limits_{N = i}^{1}\quad {G\quad \left( {{x\quad \left( t_{i} \right)},u_{i},w,t_{i},i} \right)}}}}},} & (55) \end{matrix}$

subject to the equation of state: $\begin{matrix} {{\frac{{x}\quad (t)}{t} = {{T\quad \left( {{x\quad (t)},{v\quad (t)},w,t} \right)\quad x\quad \left( {t = {w\lbrack 1\rbrack}} \right)} = {\Gamma \quad (w)}}},} & (56) \end{matrix}$

where v(t) is subject to the dynamic limitation: $\begin{matrix} {{v\quad (t)} = {\begin{matrix} {f\quad \left( {u_{1},w,t,1} \right)} & {{{for}\quad t} = {t_{0}\quad {to}\quad t_{1}}} \\ {f\quad \left( {u_{2},w,t,2} \right)} & {{{for}\quad t} = {t_{1}\quad {to}\quad t_{2}}} \\ \vdots & \vdots \\ {f\quad \left( {u_{N},w,t,N} \right)} & {{{{for}\quad t} = {t_{N - 1}\quad {to}\quad t_{N}}},} \end{matrix}}} & (57) \end{matrix}$

and where x, v, and w are subject to general constraints of the form:

L(x, v, w, t)≧0 and/or K(x, v, w, t)=0.  (58)

The static parameter vector w is assumed to have at least two components. The first two components are w[1] the start time of the problem and w[2] the duration of the problem. Note that Equations (55)-(57) are not in a form which SDC can solve directly. Equations (55)-(57) can be transformed into a mathematically equivalent problem which SDC can solve directly by making the substitution:

t=w[1]+w[2]τ 0≦τ≦1  (59)

where t is the “real time” or clock time and τ is the “normalized time.”

Substitution of the Time Transformation into the Objective

If Equation (59) is substituted into Equation (55) then: $\begin{matrix} {{{\min\limits_{u_{i},w}{\int_{0}^{1}{F\quad \left( {{x\quad \left( {{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}} \right)},{v\quad \left( {{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}} \right)},w,{{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}}} \right){w\lbrack 2\rbrack}\quad {\tau}}}} + {\sum\limits_{i = 1}^{N}\quad {G_{i}\quad \left( {{x\quad \left( {{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau_{i}}} \right)},u_{i},w,{{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau_{i}}},i} \right)}}},} & (60) \end{matrix}$

where $\tau_{i} = \frac{t_{i} - {w\lbrack 1\rbrack}}{w\lbrack 2\rbrack}$

and dt=w[2]dτ. Depending on the physical interpretations of x, v, and w, the values x, v, and w may depend on w[2]. This may be understood by considering the example when x is equal to velocity. If the value of x is 5 in real time units or t-time, then, if w[2]=2, x is w[2]×5=10 in the normalized time units or τ-time. The variables {tilde over (x)}, {tilde over (v)}, and {tilde over (w)} are defined to be the state vector, dynamic control vector, and static parameter vector, respectively, in τ-time units. In general,

x(t=w[1]+w[2]τ)=(w[2])^(nx) {tilde over (x)}(τ)  (61)

v(t=w[1]+w[2]τ)=(w[2])^(nv) {tilde over (v)}(τ)  (62)

w=(w[2])^(nw) {tilde over (w)}.  (63)

For example, if x is a velocity, then nx=−1. In general, if the units of x include time^(nx) then:

x(t=w[1]+w[2)τ=(w2])^(nx) {tilde over (x)}(τ)

because ${w\lbrack 2\rbrack} = \frac{t\quad {time}\quad {units}}{\tau \quad {time}\quad {units}}$

is the conversion factor. If the units of x do not include time then nx=0. The same arguments hold for v and nv. For example, if v is interpreted as thrust, then the units of v are [mass][length][time]⁻². It follows that the conversion is v(t=w[1]+w[2]τ)=(w[2])⁻²{tilde over (v)}(τ). For w and nw, note that the first two components of w define the substitution and hence do not require conversion (i.e. nw=0 for w[1] and w[2].) If w has more than two components, then nw will be non-zero for components of w with units of time. Note: in general, different components of state and control vectors may have different units and hence require different factors of w[2] for the conversion. An example is when the first 3 components of x are position coordinates (units of length no time units) and the second set of three components are velocity (units of length and time⁻¹.) For this example, the conversion for the first three components is (w[2])⁰=1 and the conversion for the second three components is $\left( {w\lbrack 2\rbrack} \right)^{- 1} = {\frac{1}{w\lbrack 2\rbrack}.}$

Thus (w[2])^(nx), (w[2])^(nv), and (w[2])^(nw) are interpreted as vectors εR^(n), R^(m), and R^(m) ^(_(w)) respectively. For example, $\left( {w\lbrack 2\rbrack} \right)^{nx} = \begin{bmatrix} \left( {w\lbrack 2\rbrack} \right)^{{nx}{\lbrack 1\rbrack}} \\ \left( {w\lbrack 2\rbrack} \right)^{{nx}{\lbrack 2\rbrack}} \\ \vdots \\ \left( {w\lbrack 2\rbrack} \right)^{{nx}{\lbrack n\rbrack}} \end{bmatrix}$

where nx[i] is the appropriate factor of w[2] for the i^(th) component of the state x. Further, products like (w[2])^(nx){tilde over (x)}(τ) are interpreted as an element by element product εR^(n): ${\left( {w\lbrack 2\rbrack} \right)^{nx}\overset{\sim}{x}\quad (\tau)} = \begin{bmatrix} {\left( {w\lbrack 2\rbrack} \right)^{{nx}{\lbrack 1\rbrack}}\overset{\sim}{x_{1}}\quad (\tau)} \\ {\left( {w\lbrack 2\rbrack} \right)^{{nx}{\lbrack 2\rbrack}}\overset{\sim}{x_{2}}\quad (\tau)} \\ \vdots \\ {\left( {w\lbrack 2\rbrack} \right)^{{nx}{\lbrack n\rbrack}}\overset{\sim}{x_{n}}\quad (\tau)} \end{bmatrix}$

Using the definitions for {tilde over (x)}, {tilde over (v)}, and {tilde over (w)}, Equation (60) can be rewritten in terms of the state and control in τ-time units: $\begin{matrix} {{\min\limits_{u_{i},w}{\int_{0}^{1}{{F\quad\left( {{\left( {w\lbrack 2\rbrack} \right)^{nx}\overset{\sim}{x}\quad (\tau)},{\left( {w\lbrack 2\rbrack} \right)^{nv}\overset{\sim}{v}\quad (\tau)},{\left( {w\lbrack 2\rbrack} \right)^{nw}w},{{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}}} \right)}\quad {w\quad\lbrack 2\rbrack}\quad {\tau}}}} + {\sum\limits_{i = 1}^{N}\quad {G_{i}\quad {\left( {{\left( {w\lbrack 2\rbrack} \right)^{nx}\overset{\sim}{x}\quad \left( \tau_{i} \right)},u_{i},{\left( {w\lbrack 2\rbrack} \right)^{nw}\overset{\sim}{w}},{{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau_{i}}},i} \right).}}}} & (64) \end{matrix}$

The time transformation of Equation (59) will be used to transform the state equation, the dynamic limitation, and the constraints into forms that explicitly relate to the normalized time variable τ.

Substitution of the Time Transformation into the State Equation

Substituting Equation (59) into the continuous-time state equation (56) yields: $\begin{matrix} {{\frac{{x}\quad \left( {t = {{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}}} \right)}{{w\lbrack 2\rbrack}\quad {t}} = {T\quad \left( {{x\quad \left( {{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}} \right)},{v\left( {{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}} \right)},w,{t = {{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}}}} \right)}}\quad {{x\left( {t = {w\lbrack 1\rbrack}} \right)} = {\Gamma \quad {(w).}}}} & (65) \end{matrix}$

Using the definition equations (61)-(63) Equation (65) can be rewritten as: $\begin{matrix} {{\frac{\left( {\left( {w\lbrack 2\rbrack} \right)^{nx}{\overset{\sim}{x}(\tau)}} \right)}{{w\lbrack 2\rbrack}{\tau}} = {T\left( {{\left( {w\lbrack 2\rbrack} \right)^{nx}{\overset{\sim}{x}(\tau)}},{\left( {w\lbrack 2\rbrack} \right)^{nv}{\overset{\sim}{v}(\tau)}},{\left( {w\lbrack 2\rbrack} \right)^{nw}\overset{\sim}{w}},{{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}}} \right)}},} & (66) \end{matrix}$

subject to the condition:

(w[2])^(nx) {tilde over (x)}(τ=0)=Γ((w[2])^(nw) {tilde over (w)}).  (67)

If the factors of w[2] are shifted to the right-hand-sides of Equations (66) and (67) then: $\begin{matrix} {{\frac{{\overset{\sim}{x}(\tau)}}{\tau} = {\left( {w\lbrack 2\rbrack} \right)^{1 - {nx}}{T\left( {{\left( {w\lbrack 2\rbrack} \right)^{nx}{\overset{\sim}{x}(\tau)}},{\left( {w\lbrack 2\rbrack} \right)^{nv}{\overset{\sim}{v}(\tau)}},{\left( {w\lbrack 2\rbrack} \right)^{nw}\overset{\sim}{w}},{{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}}} \right)}}},} & (68) \end{matrix}$

subject to the condition:

{tilde over (x)}(τ=0)=(w[2])^(−nx)Γ((w[2])^(nw) {tilde over (w)}),

which is the state equation for {tilde over (x)}.

Substitution of the Time Transformation into the Dynamic Limitation

Substitution of Equation (59) into the dynamic limitation equation (57) yields: $\begin{matrix} {{v\left( {{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}} \right)} = {\begin{matrix} {f\left( {u_{1},w,{{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}},1} \right)} & {{{for}\quad \tau} = {0\quad {to}\quad \frac{t_{1} - {w\lbrack 1\rbrack}}{w\lbrack 2\rbrack}}} \\ {f\left( {u_{1},w,{{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}},2} \right)} & {{{for}\quad \tau} = {\frac{t_{1} - {w\lbrack 1\rbrack}}{w\lbrack 2\rbrack}\quad {to}\quad \frac{t_{2} - {w\lbrack 1\rbrack}}{w\lbrack 2\rbrack}}} \\ \vdots & \vdots \\ {f\left( {u_{N},w,{{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}},N} \right)} & {{{for}\quad \tau} = {{fract}_{N - 1} - {{w\lbrack 1\rbrack}{w\lbrack 2\rbrack}\quad {to}\quad 1.}}} \end{matrix}}} & (69) \end{matrix}$

If τ_(i) is defined to be $\tau_{i} = \frac{t_{i} - {w\lbrack 1\rbrack}}{w\lbrack 2\rbrack}$

and the definition equations (62) and (63) are used, then Equation (69) can be rewritten as follows: $\begin{matrix} {{\overset{\sim}{v}(\tau)} = {\left( {w\lbrack 2\rbrack} \right)^{- {nv}}{\begin{matrix} {f\left( {u_{1},w,{{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}},1} \right)} & {{{for}\quad \tau} = {0\quad {to}\quad \tau_{1}}} \\ {f\left( {u_{1},w,{{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}},2} \right)} & {{{for}\quad \tau} = {\tau_{1}\quad {to}\quad \tau_{2}}} \\ \vdots & \vdots \\ {f\left( {u_{N},w,{{w\lbrack 1\rbrack} + {{w\lbrack 2\rbrack}\tau}},N} \right)} & {{{for}\quad \tau} = {\tau_{N - 1}\quad {to}\quad 1.}} \end{matrix}}}} & (70) \end{matrix}$

Equation (70) is the dynamic limitation for the dynamic control in τ-time units, {tilde over (v)}. Note that u_(i) is assumed to be a unitless vector of parameters. This is the same as assuming the units of v are embedded within a constant multiplier of the functions ƒ. For example, if ƒ(u_(i), w, t, i)=u_(i), then the units of v are contained in the constant 1 multiplying u_(i). With this approach, it is not necessary convert u_(i) to τ-time units.

Substitution of the Time Transformation into the Constraints

Substitution of (59) into the general constraint equations (58) results in:

L((w[2])^(nx) {tilde over (x)}(τ), (w[2])^(nv) {tilde over (v)}(τ), (w[2])^(nw) {tilde over (w)}, w[1]+w[2]τ)≧0  (71)

and

K((w[2])^(nx) {tilde over (x)}(τ), (w[2])^(nv) {tilde over (v)}(τ), (w[2])^(nw) {tilde over (w)}, w[1]+w[2]τ)≧0.  (72)

Summary

With the following definitions:

{tilde over (F)}({tilde over (x)}, {tilde over (v)}, {tilde over (w)}, τ)≐w[2]F((w[2])^(nx) {tilde over (x)}(τ), (w[2])^(nv) {tilde over (v)}(τ), (w[2])^(nw) {tilde over (w)}, w[1]+w[2]τ)  (73)

 {tilde over (G)}({tilde over (x)}, u _(i) , {tilde over (w)}, τ_(i) , i)≐G((w[2])^(nx) {tilde over (x)}(τ_(i)), u _(i), (w[2])^(nw) {tilde over (w)}, w[1]+w[2]τ_(i) , i)  (74)

{tilde over (T)}({tilde over (x)}, {tilde over (v)}, {tilde over (w)}, τ)≐(w[2])^(1−nx) T((w[2])^(nx) {tilde over (x)}(τ). (w[2])^(nv) {tilde over (v)}(τ), (w[2])^(nw) {tilde over (w)}, w[1]+w[2]τ)  (75)

{tilde over (Γ)}({tilde over (w)})≐(w[2])^(−nx)Γ((w[2])^(nw) {tilde over (w)})  (76)

{tilde over (ƒ)}(u _(i) , {tilde over (w)}, τ, i)≐(w[2])^(−nv)ƒ(u _(i) , w, w[1]+w[2]τ, i)  (77)

{tilde over (L)}({tilde over (x)}, {tilde over (v)}, {tilde over (w)}, τ)≐L((w[2])^(nx) {tilde over (x)}(τ), (w[2])^(nv) {tilde over (v)}(τ), (w[2])^(nw) {tilde over (w)}, w[1]+w[2]τ)  (78)

{tilde over (K)}({tilde over (x)}, {tilde over (v)}, {tilde over (w)}, τ)≐K((w[2])^(nx) {tilde over (x)}(τ), (w[2])^(nv) {tilde over (v)}(τ), (w[2])^(nw) {tilde over (w)}, w[1]+w[2]τ)  (79)

$\begin{matrix} {\tau_{i}\overset{.}{=}\frac{t_{i} - {w\lbrack 1\rbrack}}{w\lbrack 2\rbrack}} & (80) \end{matrix}$

the original problem equations (55)-(58) can be rewritten: $\begin{matrix} {{J^{*} = {{\min\limits_{u_{i},w}J} = {{\min\limits_{u_{i},\overset{\sim}{w}}{\int_{0}^{1}{{\overset{\sim}{F}\left( {{\overset{\sim}{x}(\tau)},{\overset{\sim}{v}(\tau)},\overset{\sim}{w},\tau} \right)}{\tau}}}} + {\sum\limits_{i = 1}^{N}{\overset{\sim}{G}\left( {{\overset{\sim}{x}\left( \tau_{i} \right)},u_{i},\overset{\sim}{w},\tau_{i},i} \right)}}}}},} & (81) \\ {{\frac{{\overset{\sim}{x}(\tau)}}{\tau} = {{{\overset{\sim}{T}\left( {{\overset{\sim}{x}(\tau)},{\overset{\sim}{v}(\tau)},\overset{\sim}{w},\tau} \right)}\quad {\overset{\sim}{x}\left( {\tau = 0} \right)}} = {\overset{\sim}{\Gamma}\left( \overset{\sim}{w} \right)}}},} & (82) \\ {{\overset{\sim}{v}(\tau)} = {\begin{matrix} {\overset{\sim}{f}\left( {u_{1},\overset{\sim}{w},\tau,1} \right)} & {{{for}\quad \tau} = {0\quad {to}\quad \tau_{1}}} \\ {\overset{\sim}{f}\left( {u_{2},\overset{\sim}{w},\tau,2} \right)} & {{{for}\quad \tau} = {\tau_{1}\quad {to}\quad \tau_{2}}} \\ \vdots & \vdots \\ {\overset{\sim}{f}\left( {u_{N},\overset{\sim}{w},\tau,N} \right)} & {{{{for}\quad \tau} = {\tau_{N - 1}\quad {to}\quad 1}},} \end{matrix}}} & (83) \end{matrix}$

 {tilde over (L)}({tilde over (x)}, {tilde over (v)}, {tilde over (w)}, τ)≧0, and/or {tilde over (K)}({tilde over (x)}, {tilde over (v)}, {tilde over (w)}, τ)=0,  (84)

which is a form that SDC can directly address.

7. The Theoretical Basis of the SDC Algorithm For the Period Formulation

The SDC algorithm is constructed beginning with the period (i=N) first and working in time to the period (i=1). Appendix A contains variable definitions.

The theoretical basis addresses the formulation (27)-(34). The theoretical basis begins with the period tε(t_(N−1), t_(N)). The not necessarily optimal objective value, initially defined as a function of state x at time tε(t_(N−1), t_(N)), and using parameter values u_(N) and w from time t to t_(N) is:

J(x, u _(N) , w, t)≐∫_(t) ^(t) ^(_(N)) F(x(τ), ƒ(u _(N) , w, τ, N), w, τ)dτ+G(x(t _(N)), u _(N) , w, t _(N) , N)  (85)

The symbol ≐ is read “defined to be.” It follows by definition equation (85) that,

J(x, u _(N) , w, t)=∫_(t) ^(t+Δt) F(x(τ), ƒ(u _(N) , w, τ, N), w, τ)dτ+J(x(t+Δt), u _(N) , w, t+Δt).  (86)

A Taylor series expansion of J(x(t+Δt), u_(N), w, t+Δt) about the time t is:

J(x(t+Δt), u _(N) , w, t+Δt)=J(x(t), u _(N) , w, t)+(J _(t) +J _(x) ^(t) {dot over (x)}+J _(u) ^(t) {dot over (u)} _(N) +J _(w) ^(t) {dot over (w)})Δt+O(Δt ²),  (87)

where J_(t)εR, J_(x)εR^(n), J_(u)εR^(m), J_(w)εR^(l) are partial derivatives of J with respect to t, x, u, and w. The superscript t denotes the transpose operation. The time derivatives {dot over (u)}_(N) and {dot over (w)} are both zero because u_(N) and w are not functions of time. The derivative {dot over (x)} is already defined as T(x, ƒ(u_(N), w, t, N), w, t) by Equation (29) so Equation (87) can be written:

J(x(t+Δt), u _(N) , w, t+Δt)=J(x(t), u _(N) , w, t)+J _(t) Δt+J _(x) ^(t) TΔt+O(Δt ²)  (88)

Substituting Equation (88) into Equation (86) and cancelling J(x(t), u_(N), w, t) appearing on the left and right hand sides results in:

−J _(t) Δt=∫ _(t) ^(t+Δt) F(x(τ), ƒ(u _(N) , w, τ, N), w, τ)dτ+J _(x) ^(t) TΔt+O(Δt ²).  (89)

If Equation (89) is divided by Δt and Δt→0 the result is:

−J _(t)(x, u _(N) , w, t)=F(x, ƒ(u _(N) , w, t, N), w, t)+J _(x) ^(t)(x, u _(N) , w, t)T(x, ƒ(u _(N) , w, t, N), w, t).  (90)

The right-hand side of Equation (90) is often called the Hamiltonian function. A system of (adjoint) ordinary differential equations which describe J, J_(x), J_(u), J_(w), J_(xx), J_(xu), J_(xw), J_(uu), J_(wu), and J_(ww) as functions of time tε(t_(N−1), t_(N)) can be obtained using Equation (90). Subscripts of J denote partial derivatives (for example J_(u)={fraction (∂J/∂u)}.) The system of ordinary differential equations can be used to calculate feedback law updates using only derivatives of ƒ, F, T and G. These equations are obtained by simply differentiating Equation (90) with respect to x, u, and w:

−J _(tx) =F _(x) +J _(xx) T+T _(x) ^(t) J _(x)  (91)

−J _(tu) =F _(u) +J _(xu) ^(t) T+T _(u) ^(t) J _(x)  (92)

 −J _(tw) =F _(w) +J _(xw) ^(t) T+T _(w) ^(t) J _(x)  (93)

$\begin{matrix} {{- J_{txx}} = {F_{xx} + {\sum\limits_{i = 1}^{n}{{J_{xxx}\left\lbrack {:{,{:{,i}}}} \right\rbrack}{T\lbrack i\rbrack}}} + {J_{xx}T_{x}} + {T_{x}^{t}J_{xx}} + {\sum\limits_{i = 1}^{n}{{J_{x}\lbrack i\rbrack}{T_{xx}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (94) \\ {{- J_{txu}} = {F_{xu} + {\sum\limits_{i = 1}^{n}{{J_{xux}\left\lbrack {:{,{:{,i}}}} \right\rbrack}{T\lbrack i\rbrack}}} + {J_{xx}T_{u}} + {T_{x}^{t}J_{xu}} + {\sum\limits_{i = 1}^{n}{{J_{x}\lbrack i\rbrack}{T_{xu}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (95) \\ {{- J_{txw}} = {F_{xw} + {\sum\limits_{i = 1}^{n}{{J_{xwx}\left\lbrack {:{,{:{,i}}}} \right\rbrack}{T\lbrack i\rbrack}}} + {J_{xx}T_{w}} + {T_{x}^{t}J_{xw}} + {\sum\limits_{i = 1}^{n}{{J_{x}\lbrack i\rbrack}{T_{xw}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (96) \\ {{- J_{tuu}} = {F_{uu} + {\sum\limits_{i = 1}^{n}{{J_{uux}\left\lbrack {:{,{:{,i}}}} \right\rbrack}{T\lbrack i\rbrack}}} + {J_{xu}^{t}T_{u}} + {T_{u}^{t}J_{xu}} + {\sum\limits_{i = 1}^{n}{{J_{x}\lbrack i\rbrack}{T_{uu}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (97) \\ {{- J_{twu}} = {F_{wu} + {\sum\limits_{i = 1}^{n}{{J_{wux}\left\lbrack {:{,{:{,i}}}} \right\rbrack}{T\lbrack i\rbrack}}} + {J_{xw}^{t}T_{u}} + {T_{w}^{t}J_{xu}} + {\sum\limits_{i = 1}^{n}{{J_{x}\lbrack i\rbrack}{T_{wu}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (98) \\ {{- J_{tww}} = {F_{ww} + {\sum\limits_{i = 1}^{n}{{J_{wwx}\left\lbrack {:{,{:{,i}}}} \right\rbrack}{T\lbrack i\rbrack}}} + {J_{xw}^{t}T_{w}} + {T_{w}^{t}J_{xw}} + {\sum\limits_{i = 1}^{n}{{J_{x}\lbrack i\rbrack}{{T_{ww}\left\lbrack {i,{:{,:}}} \right\rbrack}.}}}}} & (99) \end{matrix}$

The summations in Equations (94)-(99) are used to clarify products involving rank three objects. For example, T_(xx)[i, :, :] is the Hessian of the i^(th) coruporient of T with respect to x, J_(x)[i] is the i^(th) component of the derivative of J with respect to x, and ${J_{wux}\left\lbrack {i,j,k} \right\rbrack} = {\frac{\partial^{3}J}{{\partial{w\lbrack i\rbrack}}{\partial{u\lbrack j\rbrack}}{\partial{x\lbrack k\rbrack}}}.}$

Products involving rank one and/or rank two objects are ordinary vector and matrix products (for example J_(xx)T_(x) is the ordinary matrix product of two R^(n×n) matrices.) An integrable system of equations requires the total time derivatives of J, J_(x), J_(u), J_(w), J_(xx), J_(xu), J_(xw), J_(uu), J_(wu), and J_(ww). The total time derivative of J is:

{dot over (J)}=J _(t) +J _(x) ^(t) T,  (100)

where $T = {\frac{\partial x}{\partial t}.}$

Similarly;

{dot over (J)} _(x) =J _(xt) +J _(xx) T  (101)

{dot over (J)} _(u) =J _(ut) +J _(xu) ^(t) T  (102)

{dot over (J)} _(w) =J _(wt) +J _(xw) ^(t) T  (103)

$\begin{matrix} {{\overset{.}{J}}_{xx} = {J_{xxt} + {\sum\limits_{i = 1}^{n}{{J_{xxx}\left\lbrack {:{,{:{,i}}}} \right\rbrack}{T\lbrack i\rbrack}}}}} & (104) \\ {{\overset{.}{J}}_{xu} = {J_{xut} + {\sum\limits_{i = 1}^{n}{{J_{xux}\left\lbrack {:{,{:{,i}}}} \right\rbrack}{T\lbrack i\rbrack}}}}} & (105) \\ {{\overset{.}{J}}_{xw} = {J_{xwt} + {\sum\limits_{i = 1}^{n}{{J_{xwx}\left\lbrack {:{,{:{,i}}}} \right\rbrack}{T\lbrack i\rbrack}}}}} & (106) \\ {{\overset{.}{J}}_{uu} = {J_{uut} + {\sum\limits_{i = 1}^{n}{{J_{uux}\left\lbrack {:{,{:{,i}}}} \right\rbrack}{T\lbrack i\rbrack}}}}} & (107) \\ {{\overset{.}{J}}_{wu} = {J_{wut} + {\sum\limits_{i = 1}^{n}{{J_{wux}\left\lbrack {:{,{:{,i}}}} \right\rbrack}{T\lbrack i\rbrack}}}}} & (108) \\ {{\overset{.}{J}}_{ww} = {J_{wwt} + {\sum\limits_{i = 1}^{n}{{J_{wwx}\left\lbrack {:{,{:{,i}}}} \right\rbrack}{T\lbrack i\rbrack}}}}} & (109) \end{matrix}$

Substituting Equations (90) through (99) into Equations (100) through (109) yields the following integratable expression for the total derivatives:

{dot over (J)}=−F  (110)

{dot over (J)} _(x) =−F _(x) −T _(x) ^(t) J _(x)  (111)

{dot over (J)} _(u) =−F _(u) −T _(u) ^(t) J _(x)  (112)

 {dot over (J)} _(w) =−F _(w) −T _(w) ^(t) J _(x)  (113)

$\begin{matrix} {{\overset{\quad.}{J}\quad}_{xx}\quad = \quad {{- F_{xx}}\quad - \quad {J_{xx}\quad T_{x}}\quad - \quad {T_{x}^{t}\quad J_{xx}}\quad - \quad {\sum\limits_{i\quad = \quad 1}^{n}\quad {{J_{x}\lbrack i\rbrack}\quad {T_{xx}\left\lbrack {i,\quad {:{,:}}} \right\rbrack}}}}} & (114) \\ {{\overset{\quad.}{J}\quad}_{xu}\quad = \quad {{- F_{xu}}\quad - \quad {J_{xx}\quad T_{u}}\quad - \quad {T_{x}^{t}\quad J_{xu}}\quad - \quad {\sum\limits_{i\quad = \quad 1}^{n}\quad {{J_{x}\lbrack i\rbrack}\quad {T_{xu}\left\lbrack {i,\quad {:{,:}}} \right\rbrack}}}}} & (115) \\ {{\overset{\quad.}{J}\quad}_{xw}\quad = \quad {{- F_{xw}}\quad - \quad {J_{xx}\quad T_{w}}\quad - \quad {T_{x}^{t}\quad J_{xw}}\quad - \quad {\sum\limits_{i\quad = \quad 1}^{n}\quad {{J_{x}\lbrack i\rbrack}\quad {T_{xw}\left\lbrack {i,\quad {:{,:}}} \right\rbrack}}}}} & (116) \\ {{\overset{\quad.}{J}\quad}_{uu}\quad = \quad {{- F_{uu}}\quad - \quad {J_{xu}^{t}\quad T_{u}}\quad - \quad {T_{u}^{t}\quad J_{xu}}\quad - \quad {\sum\limits_{i\quad = \quad 1}^{n}\quad {{J_{x}\lbrack i\rbrack}\quad {T_{uu}\left\lbrack {i,\quad {:{,:}}} \right\rbrack}}}}} & (117) \\ {{\overset{\quad.}{J}\quad}_{wu}\quad = \quad {{- F_{wu}}\quad - \quad {J_{xw}^{t}\quad T_{u}}\quad - \quad {T_{w}^{t}\quad J_{xu}}\quad - \quad {\sum\limits_{i\quad = \quad 1}^{n}\quad {{J_{x}\lbrack i\rbrack}\quad {T_{wu}\left\lbrack {i,\quad {:{,:}}} \right\rbrack}}}}} & (118) \\ {{\overset{\quad.}{J}\quad}_{ww}\quad = \quad {{- F_{ww}}\quad - \quad {J_{xw}^{t}\quad T_{w}}\quad - \quad {T_{w}^{t}\quad J_{xw}}\quad - \quad {\sum\limits_{i\quad = \quad 1}^{n}\quad {{J_{x}\lbrack i\rbrack}\quad {T_{ww}\left\lbrack {i,\quad {:{,:}}} \right\rbrack}}}}} & (119) \end{matrix}$

Equations (110)-(119) along with the condition equations which specify J and it's derivitives at time t_(N),

J(x(t _(N)), u _(N) , w, t _(N))=G(x(t _(N)), u _(N) , w, t _(N) , N)  (120)

J _(x)(x(t _(N)), u _(N) , w, t _(N))=G _(x)(x(t _(N)), u _(N) , w, t _(N) , N)  (121)

J _(u)(x(t _(N)), u _(N) , w, t _(N))=G _(u)(x(t _(N)), u _(N) , w, t _(N) , N)  (122)

J _(w)(x(t _(N)), u _(N) , w, t _(N))=G _(w)(x(t _(N)), u _(N) , w, t _(N) , N)  (123)

J _(xx)(x(t _(N)), u _(N) , w, t _(N))=G _(xx)(x(t _(N)), u _(N) , w, t _(N) , N)  (124)

J _(xu)(x(t _(N)), u _(N) , w, t _(N))=G _(xu)(x(t _(N)), u _(N) , w, t _(N) , N)  (125)

 J _(xw)(x(t _(N)), u _(N) , w, t _(N))=G _(xw)(x(t _(N)), u _(N) , w, t _(N) , N)  (126)

J _(uu)(x(t _(N)), u _(N) , w, t _(N))=G _(uu)(x(t _(N)), u _(N) , w, t _(N) , N)  (127)

J _(wu)(x(t _(N)), u _(N) , w, t _(N))=G _(wu)(x(t _(N)), u _(N) , w, t _(N) , N)  (128)

J _(ww)(x(t _(N)), u _(N) , w, t _(N))=G _(ww)(x(t _(N)), u _(N) , w, t _(N) , N)  (129)

provide a means to calculate the first and second order partial derivatives of J with respect to x, u, and w at any time tε(t_(N−1), t_(N)). The calculation of a control update, requires these derivatives at time t_(N−1). Derivatives at time t_(N−1) can be obtained by integrating the Equations (111)-(129) from time t_(N) to t_(N−1).

Once the first and second order partial derivatives of J at time t_(N−1) are computed, a feedback update for u_(N) can be computed. The feedback update is a function of x(t_(n−1)) and w and is based on a quadratic approximation to the original problem at time t_(N−1). {overscore (u)} and {overscore (w)} denote a nominal (not necessarily optimal) control. {overscore (x)}(t) is defined to be the state trajectory obtained by integrating the state equation using {overscore (u)} and {overscore (w)}. The useful objective function J can be expanded about {overscore (u)}, {overscore (w)}, and {overscore (x)}(t_(N−1)) at time t_(N−1) using a Taylor series: $\begin{matrix} \begin{matrix} {{J\left( {{x\quad \left( t_{N - 1} \right)},u_{N},w,t_{N - 1}} \right)} = \quad {\overset{\_}{J} + {{\overset{\_}{J}}_{x}^{t}\delta \quad x} + {{\overset{\_}{J}}_{u}^{t}\delta \quad u_{N}} + {{\overset{\_}{J}}_{w}^{t}\delta \quad w} +}} \\ {\quad {{\frac{1}{2}\delta \quad x^{t}{\overset{\_}{J}}_{xx}\delta \quad x} +}} \\ {\quad {{\delta \quad x^{t}{\overset{\_}{J}}_{xu}\delta \quad u_{N}} + {\delta \quad w^{t}{\overset{\_}{J}}_{wu}\delta \quad u_{N}} +}} \\ {\quad {{\frac{1}{2}\delta \quad u_{N}^{t}{\overset{\_}{J}}_{uu}\delta \quad u_{N}} +}} \\ {\quad {{{\frac{1}{2}\delta \quad w^{t}{\overset{\_}{J}}_{ww}\delta \quad w\quad \delta \quad x^{t}{\overset{\_}{J}}_{xw}\delta \quad w} + {H.O.T.}},}} \end{matrix} & (130) \end{matrix}$

where {overscore (J)}≐J({overscore (x)}(t_(N−1)), {overscore (u)}_(N), {overscore (w)}, t_(N−1)), δx≐x(t_(N−1))−{overscore (x)}(t_(N−1)), δu_(N)≐u_(N)−{overscore (u)}_(N), δw≐w−{overscore (w)}, and H.O.T. stands for “Higher Order Terms”.

Ĵ is defined to be the quadratic part of J(x(t_(N−1)), u_(N), w, t_(N−1)): $\begin{matrix} \begin{matrix} {{\hat{J}\left( {{\delta \quad x},{\delta \quad u_{N}},{\delta \quad w}} \right)}\overset{.}{=}\quad {\overset{\_}{J} + {{\overset{\_}{J}}_{x}^{t}\delta \quad x} + {{\overset{\_}{J}}_{u}^{t}\delta \quad u_{N}} + {{\overset{\_}{J}}_{w}^{t}\delta \quad w} + {\frac{1}{2}\delta \quad x^{t}{\overset{\_}{J}}_{xx}\delta \quad x} +}} \\ {\quad {{\delta \quad x^{t}{\overset{\_}{J}}_{xu}\delta \quad u_{N}} + {\delta \quad w^{t}{\overset{\_}{J}}_{wu}\delta \quad u_{N}} + {\frac{1}{2}\delta \quad u_{N}^{t}{\overset{\_}{J}}_{uu}\delta \quad u_{N}} +}} \\ {\quad {{\frac{1}{2}\delta \quad w^{t}{\overset{\_}{J}}_{ww}\delta \quad w} + {\delta \quad x^{t}{\overset{\_}{J}}_{xw}\delta \quad {w.}}}} \end{matrix} & (131) \end{matrix}$

The necessary condition for a minima of Ĵ with respect to u_(N) is

∇_(u) _(N) Ĵ=0  (132)

Differentiating Equation (131) with respect to u_(N) yields the necessary condition:

0={overscore (J)} _(u) +{overscore (J)} _(xu) ^(t) δx+{overscore (J)} _(wu) ^(t) δw+{overscore (J)} _(uu) δu _(N)  (133)

Solving Equation (133) for δu_(N) yields the following feedback law:

δu _(N)(δx, δw)=−{overscore (J)} _(uu) ⁻¹ {overscore (J)} _(u) −{overscore (J)} _(uu) ⁻¹ {overscore (J)} _(xu) ^(t) δx−{overscore (J)} _(uu) ⁻¹ {overscore (J)} _(wu) ^(t) δw  (134)

With the definitions α_(N)≐−{overscore (J)}_(uu) ⁻¹{overscore (J)}_(u), β_(N)≐−{overscore (J)}_(uu) ⁻¹{overscore (J)}_(xu) ^(t), and γ_(N)≐−{overscore (J)}_(uu) ⁻¹{overscore (J)}_(wu) ^(t), the feedback law equation (134) can be written

δu _(N)(δx, δw)=α_(N)+β_(N) δx+γ _(N) δw.  (135)

If J_(uu) is positive (negative) definite, then {overscore (u)}_(N)+δu_(N) is the global minima (maxima) of Ĵ. Note that ∇_(wĴ(t) _(N−1))=0 is not required at this stage. The update for δw is obtained from the requirement that ∇_(w)Ĵ(t₀)=0. The resulting δw is then used in the feedback law equation (135) and its successors for period N−1, N−2, etc.

If Equation (135) is substituted into the quadratic expansion equation (131) and term, are collected, then the quadratic return function can be obtained. The quadratic return function Ĵ* is the optimal value of Ĵ with respect to δu_(N) for any given δx and δw at time t_(N−1). $\begin{matrix} \begin{matrix} {{{\hat{J}}^{*}\left( {{\delta \quad x},{\delta \quad w}} \right)} = \quad {\left( {\overset{\_}{J} + {{\overset{\_}{J}}_{u}^{t}\alpha_{N}} + {\frac{1}{2}\quad \alpha_{N}^{t}\quad {\overset{\_}{J}}_{uu}\quad \alpha_{N}}} \right) +}} \\ {\quad {{\left( {\overset{\_}{J_{x}^{t}} + {\overset{\_}{J_{u}^{t}}\beta_{N}} + {\alpha_{N}^{t}\quad {\overset{\_}{J}}_{xu}^{t}} + {\alpha_{N}^{t}\quad {\overset{\_}{J}}_{uu}\quad \beta_{N}}} \right)\quad \delta \quad x} +}} \\ {\quad {{\left( {{\overset{\_}{J_{u}^{t}}\gamma_{N}} + \overset{\_}{J_{w}^{t}} + {\alpha_{N}^{t}\quad {\overset{\_}{J}}_{uw}} + {\alpha_{N}^{t}\quad {\overset{\_}{J}}_{uu}\gamma_{N}}} \right)\quad \delta \quad w} +}} \\ {\quad {{\delta \quad {x^{t}\left( {{\frac{1}{2}\quad {\overset{\_}{J}}_{xx}} + {{\overset{\_}{J}}_{uu}\quad \beta_{N}} + {\frac{1}{2}\quad \beta_{N}^{t}{\overset{\_}{J}}_{uu}\quad \beta_{N}}} \right)}\quad \delta \quad x} +}} \\ {\quad {{\delta \quad {x^{t}\left( {{\frac{1}{2}\quad {\overset{\_}{J}}_{ww}} + {\gamma_{N}^{t}\quad {\overset{\_}{J}}_{uw}} + {\frac{1}{2}\quad \gamma_{N}^{t}\quad {\overset{\_}{J}}_{uu}\gamma_{N}}} \right)}\quad \delta \quad w} +}} \\ {\quad {\delta \quad {x^{t}\left( {{{\overset{\_}{J}}_{xu}\gamma_{N}} + {\beta_{N}^{t}{\overset{\_}{J}}_{uw}} + {\beta_{N}^{t}{\overset{\_}{J}}_{uu}\gamma_{N}} + {\overset{\_}{J}}_{xw}} \right)}\quad \delta \quad {w.}}} \end{matrix} & (136) \end{matrix}$

With the definitions α_(N)=−{overscore (J)}_(uu) ⁻¹{overscore (J)}_(u), β_(N)=−{overscore (J)}_(uu) ⁻¹{overscore (J)}_(xu) ^(t), and γ_(N)=−{overscore (J)}_(uu) ⁻¹{overscore (J)}_(wu) ^(t), Equation (136) can be simplified to: $\begin{matrix} \begin{matrix} {{{\hat{J}}^{*}\left( {{\delta \quad x},{\delta \quad w}} \right)} = \quad {\left( {\overset{\_}{J} - {\frac{1}{2}{\overset{\_}{J}}_{u}^{t}\quad {\overset{\_}{J}}_{uu}^{- 1}\quad {\overset{\_}{J}}_{u}}} \right) + {\left( {{\overset{\_}{J}}_{x}^{t} - {{\overset{\_}{J}}_{u}^{t}\quad {\overset{\_}{J}}_{uu}^{- 1}\quad {\overset{\_}{J}}_{xu}^{t}}} \right)\quad \delta \quad x} +}} \\ {\quad {{\left( {{\overset{\_}{J}}_{w}^{t} - {{\overset{\_}{J}}_{u}^{t}\quad {\overset{\_}{J}}_{uu}^{- 1}\quad {\overset{\_}{J}}_{wu}^{t}}} \right)\quad \delta \quad x} +}} \\ {\quad {{\frac{1}{2}\delta \quad {x^{t}\left( {{\overset{\_}{J}}_{xx} - {{\overset{\_}{J}}_{xu}\quad {\overset{\_}{J}}_{uu}^{- 1}\quad {\overset{\_}{J}}_{xu}^{t}}} \right)}\quad \delta \quad x} +}} \\ {\quad {{\frac{1}{2}\quad \delta \quad {x^{t}\left( {{\overset{\_}{J}}_{ww} - {{\overset{\_}{J}}_{wu}\quad {\overset{\_}{J}}_{uu}^{- 1}\quad {\overset{\_}{J}}_{xu}^{t}}} \right)}\quad \delta \quad x} +}} \\ {\quad {\delta \quad {w^{t}\left( {{\overset{\_}{J}}_{xw} - {{\overset{\_}{J}}_{xu}{\overset{\_}{J}}_{uu}^{- 1}\quad {\overset{\_}{J}}_{wu}^{t}}} \right)}\quad \delta \quad {w.}}} \end{matrix} & (137) \end{matrix}$

With the following definitions, $\begin{matrix} {{P \doteq {{\overset{\_}{J}}_{xx} - {{\overset{\_}{J}}_{xu}\quad {\overset{\_}{J}}_{uu}^{- 1}\quad {\overset{\_}{J}}_{xu}^{t}}}}{Q^{t} \doteq {{\overset{\_}{J}}_{x}^{t} - {{\overset{\_}{J}}_{u}^{t}\quad {\overset{\_}{J}}_{uu}^{- 1}\quad {\overset{\_}{J}}_{xu}^{t}}}}{R \doteq {\overset{\_}{J} - {\frac{1}{2}{\overset{\_}{J}}_{u}^{t}\quad {\overset{\_}{J}}_{uu}^{- 1}\quad {\overset{\_}{J}}_{u}}}}{S^{t} \doteq {{\overset{\_}{J}}_{w}^{t} - {{\overset{\_}{J}}_{u}^{t}\quad {\overset{\_}{J}}_{uu}^{- 1}\quad {\overset{\_}{J}}_{wu}^{t}}}}{W \doteq {{\overset{\_}{J}}_{ww} - {{\overset{\_}{J}}_{wu}\quad {\overset{\_}{J}}_{uu}^{- 1}\quad {\overset{\_}{J}}_{wu}^{t}}}}{{Y \doteq {{\overset{\_}{J}}_{xw} - {{\overset{\_}{J}}_{xu}{\overset{\_}{J}}_{uu}^{- 1}\quad {\overset{\_}{J}}_{wu}^{t}}}},}} & (138) \end{matrix}$

Equation (137) can be rewritten: $\begin{matrix} \begin{matrix} {{{\hat{J}}^{*}\left( {{\delta \quad x},{\delta \quad w}} \right)} = \quad {R + {Q^{t}\quad \delta \quad x} + {S^{t}\quad \delta \quad w} + {\frac{1}{2}\quad \delta \quad x^{t}P\quad \delta \quad x} + {\frac{1}{2}\quad \delta \quad w^{t}\quad W\quad \delta \quad w}}} \\ {\quad {{+ \delta}\quad x^{t}Y\quad \delta \quad {w.}}} \end{matrix} & (139) \end{matrix}$

The objective value accumulated between a time tε(t_(N−2), t_(N−1)) to the time t_(N) can be defined to be:

J(x(t), u _(N−1) , w, t)≐∫_(t) ^(t) ^(_(N−1)) F(x(τ), u _(N−1) , w, τ)dτ+G(x(t _(N−1)), u _(N−1) , w, t _(N−1) , N−1)+Ĵ*(δx, δw).  (140)

Note that J as defined above does not depend on a choice for u_(N) because the optimal (quadratic) choice for u_(N) will be made using the feedback law equation (135). The optimal choice for u_(N) is a function of δx and δw and indirectly a function of u_(N−1) because u_(N−1) will affect δx in general. The optimal objective value (for t>t_(N−1)) is represented by Ĵ*.

The problem is now to optimize Equation (140) with respect to u_(N−1). This can be achieved by finding a feedback update similar to Equation (135) for u_(N−1).

The form of Equation (140) is identical to Equation (85) replacing G with G+Ĵ* and replacing u_(N) by u_(N−1), hence the same development used to obtain the update equation (135) can be repeated to find an update for δu_(N−1). In particular, the ordinary differential equation system (110) to (119) can be integrated from t_(N−1) to t_(N−2) with the following conditions specified at time t_(N−1):

J(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G(x(t_(N−1)), u _(N−1) , w, t _(N−1) , N−1)+R  (141)

J _(x)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(x)(x(t _(N−1)), u _(N−1) , w, t _(N−1) , N−1)+Q  (142)

J _(u)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(u)(x(t _(N−1)), u _(N−1) , w, t _(N−1) , N−1)  (143)

J _(w)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(w)(x(t _(N−1)), u _(N−1) , w, t _(N−1) , N−1)+S  (144)

J _(xx)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(xx)(x(t _(N−1)), u _(N−1) , w, t _(N−1) , N−1)+P  (145)

 J _(xu)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(xu)(x(t _(N−1)), u _(N−1) , w, t _(N−1) , N−1)  (146)

J _(xw)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(xw)(x(t _(N−1)), u _(N−1) , w, t _(N−1) , N−1)+Y  (147)

J _(uu)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(uu)(x(t _(N−1)), u _(N−1) , w, t _(N−1) , N−1)  (148)

J _(wu)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(wu)(x(t _(N−1)), u _(N−1) , w, t _(N−1) , N−1)  (149)

J _(ww)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(ww)(x(t _(N−1)), u _(N−1) , w, t _(N−1) , N−1)+W.  (150)

If the definitions {overscore (J)}≐J({overscore (x)}(t _(N−2)), {overscore (u)}_(N−1), {overscore (w)}, t_(N−2)), δx≐x(t _(N−2))−{overscore (x)}(t _(N−2)), and δu_(N−1)≐u_(N−1)−{overscore (u)}_(N−1) are made, then the update for u_(N−1) analogous to Equation (134) is:

δu _(N−1)(δx, δw)=−{overscore (J)} _(uu) ⁻¹ {overscore (J)} _(u) −{overscore (J)} _(uu) ⁻¹ {overscore (J)} _(xu) ^(t) δx−{overscore (J)} _(uu) ⁻¹ {overscore (J)} _(wu) ^(t) δw  (151)

With the definitions, α_(N−1)≐−{overscore (J)}_(uu) ⁻¹{overscore (J)}_(u), β_(N−1)≐−{overscore (J)}_(uu) ⁻¹{overscore (J)}_(xu) ^(t), and γ_(N−1)≐−{overscore (J)}_(uu) ⁻¹{overscore (J)}_(wu) ^(t), the update for u_(N−1) can be written

δu _(N−1)(δx, δw)=α_(N−1)+β_(N−1) δx+γ _(N−1) δw.  (152)

This procedure can be repeated for each period N−2, N−3, . . . , 2. The result is a feedback law for u_(N−2), u_(N−3), . . . , u₂ similar to Equation (135).

The first period must be handled differently and requires additional steps to calculate the update δw for the static parameter vector w. The quadratic expansion which is an analog to Equation (131) for the first period t=t₀ is: $\begin{matrix} \begin{matrix} {{\hat{J}\left( {{\delta \quad x},{\delta \quad u_{1}},{\delta \quad w}} \right)} = \quad {\overset{\_}{J} + {{\overset{\_}{J}}_{x}^{t}\delta \quad x} + {{\overset{\_}{J}}_{u}^{t}\delta \quad u_{1}} + {{\overset{\_}{J}}_{w}^{t}\delta \quad w} + {\frac{1}{2}\delta \quad x^{t}{\overset{\_}{J}}_{xx}\delta \quad x} +}} \\ {\quad {{\delta \quad x^{t}{\overset{\_}{J}}_{xu}\delta \quad u_{1}} + {\delta \quad w^{t}{\overset{\_}{J}}_{wu}\delta \quad u_{1}} + {\frac{1}{2}\delta \quad u_{1}^{t}{\overset{\_}{J}}_{uu}\delta \quad u_{1}} +}} \\ {\quad {{{\frac{1}{2}\delta \quad w^{t}{\overset{\_}{J}}_{ww}\delta \quad w} + {\delta \quad x^{t}{\overset{\_}{J}}_{xw}\delta \quad w}},}} \end{matrix} & (153) \end{matrix}$

where {overscore (J)}≐J({overscore (x)}(t ₀), {overscore (u)}₁, {overscore (w)}, t₀), and δu₁≐u₁−{overscore (u)}₁. The value δx for t=t₀ is:

δx≐Γ(w)−Γ({overscore (w)})=Γ(w)−{overscore (Γ)}

An update for u₁ and w can be calculated by expanding δx(w) about {overscore (w)}: $\begin{matrix} {{{\hat{\delta}\quad x\quad (w)} = {{{\overset{\_}{\Gamma}}_{w}\quad {\delta w}} + {\frac{1}{2}\quad \delta \quad w^{t}\quad {\overset{\_}{\Gamma}}_{ww}\quad \delta \quad w}}},} & (154) \end{matrix}$

where all derivatives of Γ are evaluated at the nominal {overscore (w)}. The dependence on δx in Equation (153) can be eliminlated if Equation (154) is substituted into Equation (153). Keeping only quadratic and lower order terms, Equation (153) becomes: $\begin{matrix} \begin{matrix} {{\hat{J}\left( {{\delta \quad u_{1}},{\delta \quad w}} \right)} = \quad {\overset{\_}{J} + {{\overset{\_}{J}}_{x}^{t}{\overset{\_}{\Gamma}}_{w}\quad \delta \quad w} + {\delta \quad w^{t}\quad \left( {{\overset{\_}{J}}_{x}^{t}{\overset{\_}{\Gamma}}_{ww}}\quad \right)\quad \delta \quad w} +}} \\ {\quad {{{\overset{\_}{J}}_{u}^{t}\delta \quad u_{1}} + {{\overset{\_}{J}}_{w}^{t}\delta \quad w} + {\frac{1}{2}\delta \quad w^{t}{\overset{\_}{\Gamma}}_{w}^{t}\quad {\overset{\_}{J}}_{xx}{\overset{\_}{\Gamma}}_{w}\quad \delta \quad w} +}} \\ {\quad {{\delta \quad w^{t}\quad {\overset{\_}{\Gamma}}_{w}^{t}\quad {\overset{\_}{J}}_{xu}\delta \quad u_{1}} + {\delta \quad w^{t}{\overset{\_}{J}}_{wu}\delta \quad u_{1}} +}} \\ {\quad {{\frac{1}{2}\quad \delta \quad u_{1}^{t}\quad {\overset{\_}{J}}_{uu}\delta \quad u_{1}} + {\frac{1}{2}\quad \delta \quad w^{t}{\overset{\_}{J}}_{ww}\quad \delta \quad w} +}} \\ {\quad {\frac{1}{2}\delta \quad {w^{t}\left( {{{\overset{\_}{\Gamma}}_{w}^{t}\quad {\overset{\_}{J}}_{xw}} + {{\overset{\_}{J}}_{xw}^{t}\quad {\overset{\_}{\Gamma}}_{w}}} \right)}\quad \delta \quad {w.}}} \end{matrix} & (155) \end{matrix}$

Collecting terms, Equation (155) becomes: $\begin{matrix} {{\hat{J}\left( {{\delta \quad u_{1}},{\delta \quad w}} \right)} = {\overset{\_}{J} + {\left( {{{\overset{\_}{J}}_{x}^{t}\Gamma_{w}} + {\overset{\_}{J}}_{w}^{t}} \right)\delta \quad w} + {\frac{1}{2}\delta \quad {w^{t}\left( {{2{\overset{\_}{J}}_{x}^{t}{\overset{\_}{\Gamma}}_{ww}} + {{\overset{\_}{\Gamma}}_{w}^{t}{\overset{\_}{J}}_{xx}{\overset{\_}{\Gamma}}_{w}} + {\overset{\_}{J}}_{ww} + {{\overset{\_}{\Gamma}}_{w}^{t}{\overset{\_}{J}}_{xw}} + {{\overset{\_}{J}}_{xw}^{t}{\overset{\_}{\Gamma}}_{w}}} \right)}\delta \quad w} + {{\overset{\_}{J}}_{u}^{t}\delta \quad u_{1}} + {\frac{1}{2}\delta \quad u_{1}^{t}{\overset{\_}{J}}_{uu}\delta \quad u_{1}} + {\delta \quad {w^{t}\left( {{{\overset{\_}{\Gamma}}_{w}^{t}{\overset{\_}{J}}_{xu}} + {\overset{\_}{J}}_{wu}} \right)}\delta \quad {u_{1}.}}}} & (156) \end{matrix}$

With the definitions: $\begin{matrix} {{{\overset{\overset{\sim}{\_}}{J}}_{w}^{t}\overset{.}{=}{{{\overset{\_}{J}}_{x}^{t}{\overset{\_}{\Gamma}}_{w}} + {\overset{\_}{J}}_{w}^{t}}}{{\overset{\overset{\sim}{\_}}{J}}_{ww}\overset{.}{=}{{2{\overset{\_}{J}}_{x}^{t}\Gamma_{ww}} + {{\overset{\_}{\Gamma}}_{w}^{t}{\overset{\_}{J}}_{xx}{\overset{\_}{\Gamma}}_{w}} + {\overset{\_}{J}}_{ww} + {{\overset{\_}{\Gamma}}_{w}^{t}{\overset{\_}{J}}_{xw}} + {{\overset{\_}{J}}_{xw}{\overset{\_}{\Gamma}}_{w}}}}{{{\overset{\overset{\sim}{\_}}{J}}_{wu}\overset{.}{=}{{{\overset{\_}{\Gamma}}_{w}^{t}{\overset{\_}{J}}_{xu}} + {\overset{\_}{J}}_{wu}}},}} & (157) \end{matrix}$

Equation (156) can be written: $\begin{matrix} {{\hat{J}\left( {{\delta \quad u_{1}},{\delta \quad w}} \right)} = {\overset{\_}{J} + {{\overset{\overset{\sim t}{\_}}{J}}_{w}\delta \quad w} + {\frac{1}{2}\delta \quad w^{t}{\overset{\overset{\sim}{\_}}{J}}_{ww}\delta \quad w} + {{\overset{\_}{J}}_{u}^{t}\delta \quad u_{1}} + {\frac{1}{2}\delta \quad u_{1}^{t}{\overset{\_}{J}}_{uu}\delta \quad u_{1}} + {\delta \quad w^{t}{\overset{\overset{\sim}{\_}}{J}}_{wu}\delta \quad {u_{1}.}}}} & (158) \end{matrix}$

The optimal updates for w arid u₁, δw* and δu₁* respectively, can be calculated using the necessary conditions for optimality: $\begin{matrix} {\frac{\partial\hat{J}}{\partial u_{1}} = {0 = {{\overset{\_}{J}}_{u} + {{\overset{\overset{\sim}{\_}}{J}}_{uw}\delta \quad w^{*}} + {{\overset{\_}{J}}_{uu}\delta \quad u_{1}^{*}}}}} & (159) \\ {\frac{\partial\hat{J}}{\partial w} = {0 = {{\overset{\overset{\sim}{\_}}{J}}_{w} + {{\overset{\overset{\sim}{\_}}{J}}_{uw}^{t}\delta \quad u_{1}^{*}} + {{\overset{\overset{\sim}{\_}}{J}}_{ww}\delta \quad w^{*}}}}} & (160) \end{matrix}$

The condition equations (159) and (160) must be solved simultaneously. The update δw* can be eliminated first by solving for δw* in Equation (160) and then substituting δw* into Equation (159): $\begin{matrix} {\xi \overset{.}{=}{{\delta \quad w^{*}} = {{{- {\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}}{\overset{\overset{\sim}{\_}}{J}}_{w}} - {{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}{\overset{\overset{\sim t}{\_}}{J}}_{uw}\delta \quad u_{1}^{*}}}}} & (161) \\ {0 = {{\overset{\_}{J}}_{u} - {{\overset{\overset{\sim}{\_}}{J}}_{uw}{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}{\overset{\overset{\sim t}{\_}}{J}}_{w}} + {\left( {{\overset{\_}{J}}_{uu} - {{\overset{\overset{\sim}{\_}}{J}}_{uw}{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}{\overset{\overset{\sim t}{\_}}{J}}_{uw}}} \right)\delta \quad {u_{1}^{*}.}}}} & (162) \end{matrix}$

Thus, the update for u₁ is given by $\begin{matrix} {\alpha_{1}\overset{.}{=}{{\delta \quad u_{1}^{*}} = {\left( {{\overset{\_}{J}}_{uu} - {{\overset{\overset{\sim}{\_}}{J}}_{uw}{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}{\overset{\overset{\sim t}{\_}}{J}}_{uw}}} \right)^{- 1}{\left( {{{\overset{\overset{\sim}{\_}}{J}}_{uw}{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}{\overset{\overset{\sim}{\_}}{J}}_{w}} - {\overset{\_}{J}}_{u}} \right).}}}} & (163) \end{matrix}$

Once α₁ is obtained, Equation (161) can be used to find δw*. ξ is defined to be the optimal update δw*. Since the dependence on δx is eliminated in Equation (115), there is no need for a “β₁”, only α₁ and ξ are needed to define the update for period 1.

8. The Expected quadratic Change for the Period Formulation

In this subsection the quadratic expected change for the SDC Algorithm is calculated. The quadratic expected change is the exact change in the useful objective function J using a single iteration of the SDC algorithm if the problem the algorithm is applied to has a linear state equation and a quadratic objective. For general nonlinear problems far from the optimal solution, the change in the objective for a single iteration is different than the quadratic expected change. SDC uses the difference between the expected quadratic change and the actual change in the objective to test candidate update steps and as a convergence measure.

A single iteration of the SDC algorithm results in feedback law equations (135), (152) and it's predecessors, and the update equations (161) and (163). The feedback laws and updates are defined by α_(i), β_(i), and γ_(i) for i=2, 3, . . . , N; and ξ. This subsection will present the calculation of the expected quadratic change for slightly more general feedback laws and updates which include a single scaler parameter ε in addition to α, β, γ, and ξ. The more general feedback laws and updates are “damped” versions of the SDC feedback laws and updates developed in subsection 7. In particular, if ε=0, then no change in the control trajectory will result. If ε=1, the SDC feedback laws and updates developed in subsection 7 are applied to update the control trajectory. If ε has a value between zero and one, then the feedback laws and updates generally produce smaller changes to the current iterations control values as ε decreases. The parameter ε is useful for dealing with highly nonlinear problems because large, unstable updates can be avoided.

The sequence of updates and feedback laws are defined as follows: for period 1:

δu ₁=εα₁  (164)

δw=εξ  (165)

for periods i=2, 3, . . . , N:

δu _(i)=εα_(i)+β_(i) δx+γ _(i) δw  (166)

or equivalently for periods i=2, 3, . . . , N,

δu _(i)=εα_(i)+β_(i) δx+εγ _(i)ξ,  (167)

where ε can be any value between 1 and 0, and ${\alpha_{1} = {\left( {{{\overset{\_}{J}}_{uu}\left( t_{0} \right)} - {{\overset{\overset{\sim t}{\_}}{J}}_{wu}{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}{\overset{\overset{\sim}{\_}}{J}}_{wu}}} \right)^{- 1}\left( {{{\overset{\overset{\sim t}{\_}}{J}}_{wu}{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}{\overset{\overset{\sim}{\_}}{J}}_{w}} - {{\overset{\_}{J}}_{u}\left( t_{0} \right)}} \right)}},{\alpha_{i} = {{{- {{\overset{\_}{J}}_{uu}^{- 1}\left( t_{i - 1} \right)}}{{\overset{\_}{J}}_{u}\left( t_{i - 1} \right)}\quad \text{for}\quad i} > 1}},{\xi = {- {{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}\left( {{\overset{\overset{\sim}{\_}}{J}}_{w} - {{\overset{\overset{\sim t}{\_}}{J}}_{uw}\alpha_{1}}} \right)}}},{\beta_{i} = {{- {{\overset{\_}{J}}_{uu}^{- 1}\left( t_{i - 1} \right)}}{{\overset{\_}{J}}_{xu}^{t}\left( t_{i - 1} \right)}}},{\gamma_{i} = {{- {{\overset{\_}{J}}_{uu}^{- 1}\left( t_{i - 1} \right)}}{{{\overset{\_}{J}}_{wu}^{t}\left( t_{i - 1} \right)}.}}}$

In order to compute the expected change, begin with the N^(th) period. If the feedback law equation (166) with i=N is substituted into the quadratic expansion, $\begin{matrix} {{{\hat{J}\left( {{\delta \quad x},{\delta \quad u_{N}},{\delta \quad w}} \right)} = {\overset{\_}{J} + {{\overset{\_}{J}}_{x}^{t}\delta \quad x} + {{\overset{\_}{J}}_{u}^{t}\delta \quad u_{N}} + {{\overset{\_}{J}}_{w}^{t}\delta \quad w} + {\frac{1}{2}\delta \quad x^{i}{\overset{\_}{J}}_{xx}\delta \quad x} + {\delta \quad x^{t}{\overset{\_}{J}}_{xu}\delta \quad u_{N}} + {\delta \quad w^{t}{\overset{\_}{J}}_{wu}\delta \quad u_{N}} + {\frac{1}{2}\delta \quad u_{N}^{t}{\overset{\_}{J}}_{uu}\delta \quad u_{N}} + {\frac{1}{2}\delta \quad w^{t}{\overset{\_}{J}}_{wu}\delta \quad w} + {\delta \quad x^{t}{\overset{\_}{J}}_{xw}\delta \quad w}}},} & (168) \end{matrix}$

the result is, $\begin{matrix} {{{\hat{J}}^{\prime}\left( {{\delta \quad x},{\delta \quad w},\varepsilon,t_{N - 1}} \right)} = {\left( {\overset{\_}{J} + {{\overset{\_}{J}}_{u}^{t}\varepsilon \quad \alpha_{N}} + {\frac{1}{2}\varepsilon^{2}\alpha_{N}^{t}{\overset{\_}{J}}_{uu}\alpha_{N}}} \right) + {\left( {{{\overset{\_}{J}}_{u}^{t}\gamma_{N}} + {\overset{\_}{J}}_{w}^{t} + {\varepsilon \quad \alpha_{N}^{t}{\overset{\_}{J}}_{uw}} + {\varepsilon \quad \alpha_{N}^{t}{\overset{\_}{J}}_{uu}\gamma_{N}}} \right)\delta \quad w} + {\delta \quad {w^{t}\left( {{\frac{1}{2}{\overset{\_}{J}}_{ww}} + {\gamma_{N}^{t}{\overset{\_}{J}}_{uw}} + {\frac{1}{2}\gamma_{N}^{t}{\overset{\_}{J}}_{uu}\gamma_{N}}} \right)}\delta \quad w} + {\delta \quad {w^{t}\left( {{\gamma_{N}^{t}{\overset{\_}{J}}_{xu}^{t}} + {{\overset{\_}{J}}_{uw}^{t}\beta_{N}} + {\gamma_{N}^{t}{\overset{\_}{J}}_{uu}\beta_{N}} + {\overset{\_}{J}}_{xw}^{t}} \right)}\delta \quad x} + {\left( {{\overset{\_}{J}}_{x}^{t} + {{\overset{\_}{J}}_{u}^{t}\beta_{N}} + {\varepsilon \quad \alpha_{N}^{t}{\overset{\_}{J}}_{xu}^{t}} + {\varepsilon \quad \alpha_{N}^{t}{\overset{\_}{J}}_{uu}\beta_{N}}} \right)\delta \quad x} + {\delta \quad {x^{t}\left( {{\frac{1}{2}{\overset{\_}{J}}_{xx}} + {{\overset{\_}{J}}_{xu}\beta_{N}} + {\frac{1}{2}\beta_{N}^{t}{\overset{\_}{J}}_{uu}\beta_{N}}} \right)}\delta \quad {x.}}}} & (169) \end{matrix}$

Using the definitions of α_(N), β_(N) and γ_(N), and collecting terms, Equation (169) can be written: $\begin{matrix} {{{\hat{J}}^{\prime}\left( {{\delta \quad x},{\delta \quad w},\varepsilon,t_{N - 1}} \right)} = {{\overset{\_}{J}\left( t_{N - 1} \right)} + {\left( {\frac{\varepsilon^{2}}{2} - \varepsilon} \right){\overset{\_}{J}}_{u}^{t}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{u}} + {\left( {{\overset{\_}{J}}_{w}^{t} - {{\overset{\_}{J}}_{u}^{t}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{wu}^{t}}} \right)\delta \quad w} + {\frac{1}{2}\delta \quad {w^{t}\left( {{\overset{\_}{J}}_{ww} - {{\overset{\_}{J}}_{ww}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{uw}}} \right)}\delta \quad w} + {\delta \quad {w^{t}\left( {{\overset{\_}{J}}_{xw}^{t} - {{\overset{\_}{J}}_{wu}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{xu}^{t}}} \right)}\delta \quad x} + {\left( {{\overset{\_}{J}}_{x}^{t} - {{\overset{\_}{J}}_{u}^{t}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{xu}^{t}}} \right)\delta \quad x} + {\frac{1}{2}\delta \quad {x^{t}\left( {{\overset{\_}{J}}_{xx} - {{\overset{\_}{J}}_{xu}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{xu}^{t}}} \right)}\delta \quad {x.}}}} & (170) \end{matrix}$

Equation (170) is the quadratic expected objective for the N^(th) period given δx, δw and ε when the feedback law equation (166) is used.

With the definitions: $\begin{matrix} {{P\overset{.}{=}{{\overset{\_}{J}}_{xx} - {{\overset{\_}{J}}_{xu}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{xu}^{t}}}}{Q^{t}\overset{.}{=}{{\overset{\_}{J}}_{x}^{t} - {{\overset{\_}{J}}_{u}^{t}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{xu}^{t}}}}{{R(\varepsilon)}\overset{.}{=}{{\overset{\_}{J}\left( t_{N - 1} \right)} + {\left( {\frac{\varepsilon^{2}}{2} - \varepsilon} \right){\overset{\_}{J}}_{u}^{t}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{u}}}}{S^{t}\overset{.}{=}{{\overset{\_}{J}}_{w}^{t} - {{\overset{\_}{J}}_{u}^{t}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{wu}^{t}}}}{W\overset{.}{=}{{\overset{\_}{J}}_{ww} - {{\overset{\_}{J}}_{uu}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{wu}^{t}}}}{Y\overset{.}{=}{{\overset{\_}{J}}_{xw} - {{\overset{\_}{J}}_{xu}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{wu}^{t}}}}} & (171) \end{matrix}$

Equation (170) can be rewritten, $\begin{matrix} {{{\hat{J}}^{l}\left( {{\delta \quad x},{\delta \quad w},\varepsilon,t_{N - 1}} \right)} = {{R(\varepsilon)} + {Q^{t}\delta \quad x} + {S^{t}\delta \quad w} + {\frac{1}{2}\delta \quad x^{t}{P\delta x}} + {\frac{1}{2}\delta \quad w^{t}{W\delta w}} + {\delta \quad x^{t}{{Y\delta w}.}}}} & (172) \end{matrix}$

For the period N−1, tε(t _(N−2), t_(N−1)), J′ can be defined to be:

J′(x(t), u _(N−1) , w, ε, t)≐∫_(t) ^(t) ^(_(N−1)) F(x(τ), ƒ_(N−1)(u _(N−1), τ), w, τ)δτ+G(x(t _(N−1)), u _(N−1) , w, t _(N−1) , N−1)+Ĵ′(δx(t _(N−1)), δw, ε, t _(N−1)).  (173)

Equation (173) is an approximation for the objective for time tε(t _(N−2), t_(N−1)) to t_(N). Arbitrary δw, ε and u_(N−1) can be used in Equation (173). Equation (173) assumes that u_(N−1) is used until t_(N−1) and then the feedback law equation (167) is used for time t_(N−1) to t_(N). Note that the objective indicated by Equation (173) is exact over (t _(N−2), t_(N−1)) but is only approximated by the quadratic expansion Ĵ about the nominal policy for time t_(N−1) to t_(N). The form of Equation (173) is identical to Equation (85) replacing G with G+Ĵ and replacing u_(N) by u_(N−1), hence the same development used to obtain the quadratic expansion equation (131) can be repeated. Unlike Equation (85), there is now a dependence on ε occurring in the last term of Equation (173). At this stage, arbitrary u_(N−1) can be considered. i.e. u_(N−1) is not limited to the feedback law equation (167) and hence is not dependent on ε. Once the quadratic expansion of Equation (173) about {overscore (u)}_(N−1), {overscore (x)}(t _(N−2)), and {overscore (w)} is calculated, then the feedback law equation (167) can be used to find the expected quadratic change of the objective from time t_(N−2) to time t_(N) as a function of ε and δw.

Thus if the equation system (110)-(119) is integrated subject to the conditions at time t_(N−1):

J(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G(x(t _(N−1)), u _(N−1) , w, t _(N−1) , N −1)+ R(ε)

J _(x)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(x)(x(t _(N−1)), u _(N−1) , w, t _(N−1))+Q

J _(u)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(u)(x(t _(N−1)), u _(N−1) , w, t _(N−1))

J _(w)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(w)(x(t _(N−1)), u _(N−1) , w, t _(N−1))+S

J _(xx)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(xx)(x(t _(N−1)), u _(N−1) , w, t _(N−1))+P

J _(xu)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(xu)(x(t _(N−1)), u _(N−1) , w, t _(N−1))

J _(xw)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(xw)(x(t _(N−1)), u _(N−1) , w, t _(N−1))+Y

J _(uu)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(uu)(x(t _(N−1)), u _(N−1) , w, t _(N−1))

J _(wu)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(wu)(x(t _(N−1)), u _(N−1) , w, t _(N−1))

J _(ww)(x(t _(N−1)), u _(N−1) , w, t _(N−1))=G _(ww)(x(t _(N−1)), u _(N−1) , w, t _(N−1))+W

then, the desired quadratic expansion can be obtained.

The next step is to perform the necessary integration to obtain J′({overscore (x)}(t _(N−2)), {overscore (w)}, {overscore (u)}_(N−1), ε, t_(N−2)) and it's derivatives with respect to x(t _(N−2)), w, and u_(N−1) where the derivatives are evaluated at {overscore (x)}(t _(N−2)), {overscore (w)}, and u_(N−1). The integration of J′ depends on ε through R(ε). The integrations to obtain the derivatives of J′ do not depend on ε. Substitution of u_(N−1)={overscore (u)}_(N−1), x(t)={overscore (x)}(t), and w={overscore (w)} into Equation (173) yields:

J′(ε, t)=∫_(t) ^(t) ^(_(N−1)) F({overscore (x)}(τ), ƒ _(N−1)({overscore (u)} _(N−1), τ), {overscore (w)}, τ)dτ+G({overscore (x)}(t _(N−1)), {overscore (u)} _(N−1) , {overscore (w)}, t _(N−1) , N−1)+R(ε).  (175)

Note that Ĵ in Equation (172) is just R(ε) when u_(N−1)={overscore (u)}_(N−1), x(t)={overscore (x)}(t), and w={overscore (w)}. Equation (175) can be rewritten as follows using the definition of the useful objective and R(ε): $\begin{matrix} \begin{matrix} {{J^{\prime}\left( {\varepsilon,t} \right)}\quad = {{\int_{t}^{t_{N - 1}}{\overset{\_}{F}\quad {t^{\prime}}}} + \overset{\_}{G} + {R(\varepsilon)}}} \\ {= \quad {{\int_{t}^{t_{N - 1}}{\overset{\_}{F}\quad {t^{\prime}}}} + \overset{\_}{G} + {\overset{\_}{J}\left( t_{N - 1} \right)} + {\left( {\frac{\varepsilon^{2}}{2} - \varepsilon} \right){{\overset{\_}{J}}_{u}^{t}\left( t_{N - 1} \right)}{{\overset{\_}{J}}_{uu}^{- 1}\left( t_{N - 1} \right)}{{\overset{\_}{J}}_{u}\left( t_{N - 1} \right)}}}} \\ {= \quad {{\overset{\_}{J}(t)} + {\left( {\frac{\varepsilon^{2}}{2} - \varepsilon} \right){{\overset{\_}{J}}_{u}^{t}\left( t_{N - 1} \right)}{{\overset{\_}{J}}_{uu}^{- 1}\left( t_{N - 1} \right)}{{\overset{\_}{J}}_{u}\left( t_{N - 1} \right)}}}} \end{matrix} & (176) \end{matrix}$

where

{overscore (F)}(t′)≐F({overscore (x)}(t′), ƒ_(N−1)({overscore (u)} _(N−1) , t′), {overscore (w)}, t′)

and

{overscore (G)}≐G({overscore (x)}(t _(N−1)), {overscore (u)}_(N−1) , {overscore (w)}, t _(N−1) , N−1).

Thus the quadratic expansion of J′(ε, t_(N−2)) about the nominal state and control is $\begin{matrix} {{\hat{J}}^{\prime} = {{\overset{\_}{J}\left( t_{N - 2} \right)} + {\left( {\frac{\varepsilon^{2}}{2} - \varepsilon} \right){{\overset{\_}{J}}_{u}^{t}\left( t_{N - 1} \right)}{{\overset{\_}{J}}_{uu}^{- 1}\left( t_{N - 1} \right)}{{\overset{\_}{J}}_{u}\left( t_{N - 1} \right)}{{\overset{\_}{J}}_{x}^{t}\left( t_{N - 2} \right)}\delta \quad x} + {{{\overset{\_}{J}}_{u}^{t}\left( t_{N - 2} \right)}\delta \quad u_{N - 1}} + {{{\overset{\_}{J}}_{w}^{t}\left( t_{N - 2} \right)}\delta \quad w} + {\frac{1}{2}\delta \quad x^{t}{{\overset{\_}{J}}_{xx}\left( t_{N - 2} \right)}\delta \quad x} + {\delta \quad x^{t}{{\overset{\_}{J}}_{xu}\left( t_{N - 2} \right)}\delta \quad u_{N - 1}} + {\delta \quad w^{t}{{\overset{\_}{J}}_{wu}\left( t_{N - 2} \right)}\delta \quad u_{N - 1}} + {\frac{1}{2}\delta \quad u_{N - 1}^{t}{{\overset{\_}{J}}_{uu}\left( t_{N - 2} \right)}\delta \quad u_{N - 1}} + {\frac{1}{2}\delta \quad w^{t}{{\overset{\_}{J}}_{wu}\left( t_{N - 2} \right)}\delta \quad w} + {\delta \quad x^{t}{{\overset{\_}{J}}_{xw}\left( t_{N - 2} \right)}\delta \quad {w.}}}} & (177) \end{matrix}$

Substituting the feedback law equation (167) with i=N−1 into Equation (177) and collecting terms using the definitions of α_(N−1), β_(N−1), and γt_(N−1) yields (analogous to Equation (170)): $\begin{matrix} {{{{\hat{J}}^{\prime}\left( {{\delta \quad x},{\delta \quad w},\varepsilon,t_{N - 2}} \right)} = {{\overset{\_}{J}\left( t_{N - 2} \right)} + {\left( {\frac{\varepsilon^{2}}{2} - \varepsilon} \right){\sum\limits_{i = {N - 2}}^{N - 1}{{{\overset{\_}{J}}_{u}^{t}\left( t_{i} \right)}{{\overset{\_}{J}}_{uu}^{- 1}\left( t_{i} \right)}{{\overset{\_}{J}}_{u}\left( t_{i} \right)}}}} + {\left( {{\overset{\_}{J}}_{w}^{t} - {{\overset{\_}{J}}_{u}^{i}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{wu}^{t}}} \right)\delta \quad w} + {\frac{1}{2}\delta \quad {w^{t}\left( {{\overset{\_}{J}}_{ww} - {{\overset{\_}{J}}_{wu}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{uw}}} \right)}\delta \quad w} + {\delta \quad {w^{t}\left( {{\overset{\_}{J}}_{w}^{t} - {{\overset{\_}{J}}_{wu}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{xu}^{t}}} \right)}\delta \quad x} + {\left( {{\overset{\_}{J}}_{w}^{t} - {{\overset{\_}{J}}_{u}^{t}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{xu}^{t}}} \right)\delta \quad x} + {\frac{1}{2}\delta \quad {x^{t}\left( {{\overset{\_}{J}}_{xx} - {{\overset{\_}{J}}_{xu}{\overset{\_}{J}}_{uu}^{- 1}{\overset{\_}{J}}_{xu}^{t}}} \right)}\delta \quad x}}},} & (178) \end{matrix}$

where {overscore (J)} and it's derivatives with out a time argument are assumed to have a time argument of t=t_(N−2). Equation (178) is the quadratic expected objective value for an arbitrary ε, δx(t _(N−2)), and δw when the feedback law equation (166) is used for periods N and N−1.

A procedure analogous to the procedure outlined above for period N−1 can be used for all remaining periods in the order N−2, N−3, . . . , 1. In particular, the analogous expression for Equation (177) can be written for t=t₀: $\begin{matrix} {{{\hat{J}}^{\prime}\left( {{\delta \quad x},{\delta \quad u_{1}},{\delta \quad w},\varepsilon,t_{0}} \right)} = {{\overset{\_}{J}\left( t_{0} \right)} + {\left( {\frac{\varepsilon^{2}}{2} - \varepsilon} \right){\sum\limits_{i = 1}^{N - 1}{{{\overset{\_}{J}}_{u}^{t}\left( t_{i} \right)}{{\overset{\_}{J}}_{uu}^{- 1}\left( t_{i} \right)}{{\overset{\_}{J}}_{u}\left( t_{i} \right)}}}} + {{{\overset{\_}{J}}_{x}^{t}\left( t_{0} \right)}\delta \quad x} + {{{\overset{\_}{J}}_{u}^{t}\left( t_{0} \right)}\delta \quad u_{1}} + {{{\overset{\_}{J}}_{w}^{t}\left( t_{0} \right)}\delta \quad w} + {\frac{1}{2}\delta \quad x^{t}{{\overset{\_}{J}}_{xx}\left( t_{0} \right)}\delta \quad x} + {\delta \quad x^{t}{{\overset{\_}{J}}_{xu}\left( t_{0} \right)}\delta \quad u_{1}} + {\delta \quad w^{t}{{\overset{\_}{J}}_{wu}\left( t_{0} \right)}\delta \quad u_{1}} + {\frac{1}{2}\delta \quad u_{1}^{t}{{\overset{\_}{J}}_{uu}\left( t_{0} \right)}\delta \quad u_{1}} + {\frac{1}{2}\delta \quad w^{t}{{\overset{\_}{J}}_{ww}\left( t_{0} \right)}\delta \quad w} + {\delta \quad x^{t}{{\overset{\_}{J}}_{xw}\left( t_{0} \right)}\delta \quad {w.}}}} & (179) \end{matrix}$

The dependence of Equation (179) on δx at t=t₀ can be eliminated using Equation (154) and the definition equations (157): $\begin{matrix} {{{\hat{J}}^{\prime}\left( {{\delta \quad u_{1}},{\delta \quad w},\varepsilon,t_{0}} \right)} = {{\overset{\_}{J}\left( t_{0} \right)} + {\left( {\frac{\varepsilon^{2}}{2} - \varepsilon} \right){\sum\limits_{i = 1}^{N - 1}{{{\overset{\_}{J}}_{u}^{t}\left( t_{i} \right)}{J_{uu}^{- 1}\left( t_{i} \right)}{{\overset{\_}{J}}_{u}\left( t_{i} \right)}}}} + {{{\overset{\_}{J}}_{u}^{t}\left( t_{0} \right)}\delta \quad u_{1}} + {{{\overset{\overset{\sim}{\_}}{J}}_{w}^{t}\left( t_{0} \right)}\delta \quad w} + {\delta \quad w^{t}{{\overset{\overset{\sim}{\_}}{J}}_{wu}\left( t_{0} \right)}\delta \quad u_{1}} + {\frac{1}{2}\delta \quad u_{1}^{t}{{\overset{\_}{J}}_{uu}\left( t_{0} \right)}\delta \quad u_{1}} + {\frac{1}{2}\delta \quad w^{t}{{\overset{\overset{\sim}{\_}}{J}}_{ww}\left( t_{0} \right)}\delta \quad {w.}}}} & (180) \end{matrix}$

The dependences of Equation (180) on both δu₁ and δw can be removed by using the update equations (164) and (165). If δu₁=εα₁ is substituted into Equation (180) where, ${\alpha_{1} = {\left( {{{\overset{\_}{J}}_{uu}\left( t_{0} \right)} - {{{\overset{\overset{\sim}{\_}}{J}}_{uw}\left( t_{0} \right)}{{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}\left( t_{0} \right)}{{\overset{\overset{\sim t}{\_}}{J}}_{uw}\left( t_{0} \right)}}} \right)^{- 1}\left( {{{{\overset{\overset{\sim}{\_}}{J}}_{uw}\left( t_{0} \right)}{{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}\left( t_{0} \right)}{{\overset{\overset{\sim}{\_}}{J}}_{ww}\left( t_{0} \right)}{{\overset{\overset{\sim}{\_}}{J}}_{w}\left( t_{0} \right)}} - {{\overset{\_}{J}}_{u}\left( t_{0} \right)}} \right)}},$

and δw is replaced with ${{\delta \quad w} = {{- \varepsilon}\quad {{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}\left( t_{0} \right)}\left( {{{\overset{\overset{\sim}{\_}}{J}}_{w}\left( t_{0} \right)} - {{{\overset{\overset{\sim}{\_}}{J}}_{uw}^{t}\left( t_{0} \right)}\alpha_{1}}} \right)}},$

the result after collecting like terms is: $\begin{matrix} {{{\hat{J}}^{\prime}\left( {\varepsilon,t_{0}} \right)} = {{\overset{\_}{J}\left( t_{0} \right)} + {\left( {\frac{\varepsilon^{2}}{2} - \varepsilon} \right){\overset{\overset{\sim t}{\_}}{J}}_{w}{\overset{\overset{\sim}{\_}}{J}}_{ww}^{- 1}{\overset{\overset{\sim}{\_}}{J}}_{w}} + {\left( {\frac{\varepsilon^{2}}{2} - \varepsilon} \right){\sum\limits_{i = 1}^{N - 1}{{{\overset{\_}{J}}_{u}^{t}\left( t_{i} \right)}{{\overset{\_}{J}}_{uu}^{- 1}\left( t_{i} \right)}{{\overset{\_}{J}}_{u}\left( t_{i} \right)}}}} + {\left( {\frac{\varepsilon^{2}}{2} - \varepsilon} \right)\left( {{{\overset{\overset{\sim t}{\_}}{J}}_{w}{\overset{\_}{J}}_{ww}^{- 1}{\overset{\overset{\sim}{\_}}{J}}_{wu}} - {{\overset{\_}{J}}_{u}^{t}\left( t_{0} \right)}} \right){\alpha_{1}.}}}} & (181) \end{matrix}$

Equation (181) is the expected quadratic objective value for feedback law equation (167) with arbitrary epsilon. The actual objective value obtained during the integration of the state and the useful objective function J can be compared with Equation (181) for convergence information. The expected quadratic change is computed by the SDC algorithm and stored in the program variable ΔR. This completes the theoretical basis of the SDC Algorithm.

Although the description contains many specificities, these should not be construed as limiting the scope of the invention, but merely providing illustrations of some of the presently preferred embodiments of this invention. The present invention can be used with minor modifications well known in art, such as Quasi Newton approximations, Hessian shifting, SALQR approximation, adaptive integration, implicit-time integration. Trust region methods, iterative equation solvers, bang-bang optimization, non-convex objective functions, sparse operations, and multi-grid methods. The present invention can also be extended to a fully continuous formulation (i.e. without the dynamic limitation equation in the formulation equations (1)-(31), see Appendix B.)

APPENDIX A Variable and Function Definitions Symbol Dimensions Definition α_(i) vector ∈ ^(m) feedback law coefficient for period i β_(i) matrix ∈ ^(m×n) feedback law coefficient for period i C₀(t) scaler function defined by (244) C₁(t) vector function ∈ ^(n) defined by (245) C₂(t) vector function ∈ ^(m′) defined by (246) C₃(t) vector function ∈ ^(l) defined by (247) C₄(t) matrix function ∈ ^(n×n) defined by (248) C₅(t) matrix function ∈ ^(m′×m′) defined by (249) C₆(t) matrix function ∈ ^(l×l) defined by (250) C₇(t) matrix function ∈ ^(n×m′) defined by (251) C₈(t) matrix function ∈ ^(n×l) defined by (252) C₉(t) matrix function ∈ ^(l×m′) defined by (253) c_(d) real scaler > 0 penalty function weight c_(l) real scaler > 0 penalty function weight ΔR scaler expected quadratic change δx vector ∈ ^(n) difference between current state and the nominal state: δx = x − {overscore (x)} {circumflex over (δ)}x vector ∈ ^(n) quadratic expansion of the state function Γ. See (273) δw vector ∈ ^(l) difference between current and nominal static parameter vectors δw = w − {overscore (w)} δu_(i) vector ∈ ^(m) difference between current and nominal dynamic parameter vectors: δu_(i) = u_(i) − {overscore (u)}_(i) δw* vector ∈ ^(l) difference between optimal and nominal static parameter vectors δw* = w* − {overscore (w)} δu*_(i) vector ∈ ^(m) difference between optimal and nominal dynamic parameter vectors: δu*_(i) = u*_(i) − {overscore (u)}_(i) ε real scaler ∈(0, 1) feedback law damping factor F(x, v, w, t) scaler function integrand of the objective function J {overscore (F)}(t) scaler function function F evaluated using the nominal state and control = F({overscore (x)}(t), {overscore (v)}(t), {overscore (w)}, t) F_(x)(x, u, w, t) vector function ∈ ^(n) gradient of F w.r.t. x: $\frac{\partial F}{\partial x}$

{overscore (F)}_(x)(t) vector function ∈ ^(n) defined to be F_(x)({overscore (x)}(t), {overscore (v)}(t), {overscore (w)}, t) F_(u)(x, u, w, t) vector function ∈ ^(m) gradient of F w.r.t. u: $\frac{\partial F}{\partial u}$

{overscore (F)}_(v)(t) vector function ∈ ^(m′) defined to be F_(v)({overscore (x)}(t), {overscore (v)}(t), {overscore (w)}, t) F_(w)(x, u, w, t) vector function ∈ ^(l) gradient of F w.r.t. w: $\frac{\partial F}{\partial w}$

{overscore (F)}_(w)(t) vector function ∈ ^(l) defined to be F_(w)({overscore (x)}(t), {overscore (v)}(t), {overscore (w)}, t) F_(xx)(x, u, w, t) matrix function ∈ ^(n×n) Hessian of F w.r.t. x: $\frac{\partial^{2}F}{\partial x^{2}}$

{overscore (F)}_(xx)(t) matrix function ∈ ^(n×n) defined to be F_(xx)({overscore (x)}(t), {overscore (v)}(t), {overscore (w)}, t) F_(uu)(x, u, w, t) matrix function ∈ ^(m×m) Hessian of F w.r.t. u: $\frac{\partial^{2}F}{\partial u^{2}}$

{overscore (F)}_(vv)(t) matrix function ∈ ^(m′×m′) Hessian of F: $\frac{\partial^{2}F}{\partial v^{2}}$

({overscore (x)}(t), {overscore (v)}(t), {overscore (w)}, t) F_(ww)(x, u, w, t) matrix function ∈ ^(l×l) Hessian of F w.r.t. w: $\frac{\partial^{2}F}{\partial w^{2}}$

{overscore (F)}_(ww)(t) matrix function ∈ ^(l×l) defined to be F_(ww)({overscore (x)}(t), {overscore (v)}(t), {overscore (w)}, t) F_(xu)(x, u, w, t) matrix function ∈ ^(n×m) derivative of F w.r.t. x, u: $\frac{\partial^{2}F}{{\partial x}{\partial u}}$

{overscore (F)}_(xv)(t) matrix function ∈ ^(n×m′) defined to be F_(xv)({overscore (x)}(t), {overscore (v)}(t), {overscore (w)}, t) F_(wu)(x, u, w, t) matrix function ∈ ^(l×m) derivative of F w.r.t. w, u: $\frac{\partial^{2}F}{{\partial w}{\partial u}}$

{overscore (F)}_(wv)(t) matrix function ∈ ^(l×m′) defined to be F_(wv)({overscore (x)}(t), {overscore (v)}(t), {overscore (w)}, t) F_(xw)(x, u, w, t) matrix function ∈ ^(n×l) derivative of F w.r.t. x, w: $\frac{\partial^{2}F}{{\partial x}{\partial w}}$

{overscore (F)}_(xw)(t) matrix function ∈ ^(n×l) defined to be F_(xw)({overscore (x)}(t), {overscore (v)}(t), {overscore (w)}, t) {tilde over (F)}({tilde over (x)}, {tilde over (v)}, {tilde over (w)}, τ) scaler function objective in normalized time units f(u_(i), w, t, i) vector function ∈ ^(m′) parametric period function {tilde over (f)}({tilde over (x)}, {tilde over (v)}, {tilde over (w)}, τ) vector function ∈ ^(m′) function f in normalized time units Γ(w) vector function ∈ ^(n) state vector value at t = t₀ Γ_(w)(w) matrix function ∈ ^(n×l) derivative of Γ: $\frac{\partial\Gamma}{\partial w}$

Γ_(ww)(w) rank 3 function ∈ ^(n×l×l) derivative of Γ: $\frac{\partial\Gamma}{\partial w^{2}}$

{overscore (Γ)} vector ∈ ^(n) state vector value at t = t₀ when w = {overscore (w)} {overscore (Γ)}_(w) matrix ∈ ^(n×l) derivative Γ_(w) evaluated at {overscore (w)} {overscore (Γ)}_(ww) rank 3 ∈ ^(n×l×l) derivative Γ_(ww) evaluated at {overscore (w)} {tilde over (Γ)}({tilde over (w)}) vector function ∈ ^(n) function Γ in normalized time units γ_(i) matrix ∈ ^(m×l) feedback law coefficient for period i G(x, u, w, t) scaler function Time specific part of the objective J. {overscore (G)} scaler defined G({overscore (x)}(t_(N−1)), {overscore (u)}_(N−1), {overscore (w)}, t_(N−1), N − 1) G_(x)(x, u, w, t) vector function ∈ ^(n) gradient of G w.r.t. x: $\frac{\partial G}{\partial x}$

G_(u)(x, u, w, t) vector function ∈ ^(m) gradient of G w.r.t. u: $\frac{\partial G}{\partial u}$

G_(w)(x, u, w, t) vector function ∈ ^(l) gradient of G w.r.t. w: $\frac{\partial G}{\partial w}$

G_(xx)(x, u, w, t) matrix function ∈ ^(n×n) Hessian of G w.r.t. x: $\frac{\partial^{2}G}{\partial x^{2}}$

G_(uu)(x, u, w, t) matrix function ∈ ^(m×m) Hessian of G w.r.t. u: $\frac{\partial^{2}G}{\partial u^{2}}$

G_(xx)(x, u, w, t) matrix function ∈ ^(l×l) Hessian of G w.r.t. w: $\frac{\partial^{2}G}{\partial w^{2}}$

G_(xu)(x, u, w, t) matrix function ∈ ^(n×m) derivative of G w.r.t. x, u: $\frac{\partial^{2}G}{{\partial x}{\partial u}}$

G_(wu)(x, u, w, t) matrix function ∈ ^(l×m) derivative of G w.r.t. w, u: $\frac{\partial^{2}g}{{\partial w}{\partial u}}$

G_(xw)(x, u, w, t) matrix function ∈ ^(n×l) derivative of G w.r.t. x, w: $\frac{\partial^{2}G}{{\partial x}{\partial w}}$

{tilde over (G)}({tilde over (x)}, {tilde over (v)}, {tilde over (w)}, τ) scaler function objective in normalized time units g scaler constant acceleration of gravity at sea level H.O.T. various abbreviation for “Higher Order Terms” I_(sp) scaler specific impulse i integer scaler counting integer or variable subscript J(u, w) scaler function useful objective function J(x, u, w, t) scaler function objective value accumulated from time t to time t_(N) J(x, u, v, t) scaler function objective value accumulated from time t to time t_(f): See (184) (fully continuous formulation) J*(t₀) scaler the optimal value min_(u,w)J(x, u, w, t₀) J*(x, w, t) scaler function the optimal value min_(v)J(x, v, w, t) J_(x)(x, u, w, t) vector function ∈ ^(n) gradient of J w.r.t. x: $\frac{\partial J}{\partial x}$

J_(u)(x, u, w, t) vector function ∈ ^(m) gradient of J w.r.t. u: $\frac{\partial J}{\partial u}$

J_(w)(x, u, w, t) vector function ∈ ^(l) gradient of J w.r.t. w: $\frac{\partial J}{\partial w}$

J_(xx)(x, u, w, t) matrix function ∈ ^(n×n) Hessian of J w.r.t. x: $\frac{\partial^{2}J}{\partial x^{2}}$

J_(uu)(x, u, w, t) matrix function ∈ ^(m×m) Hessian of J w.r.t. u: $\frac{\partial^{2}J}{\partial u^{2}}$

J_(xx)(x, u, w, t) matrix function ∈ ^(l×l) Hessian of J w.r.t. w: $\frac{\partial^{2}J}{\partial w^{2}}$

J_(xu)(x, u, w, t) matrix function ∈ ^(n×m) derivative of J w.r.t. x, u: $\frac{\partial^{2}J}{{\partial x}{\partial u}}$

J_(wu)(x, u, w, t) matrix function ∈ ^(l×m) derivative of J w.r.t. w, u: $\frac{\partial^{2}J}{{\partial w}{\partial u}}$

J_(xw)(x, u, w, t) matrix function ∈ ^(n×l) derivative of J w.r.t. x, w: $\frac{\partial^{2}J}{{\partial x}{\partial w}}$

J_(tx)(x, u, w, t) vector function ∈ ^(n) partial derivative of J_(x) w.r.t time: $\frac{\partial J_{x}}{\partial t}$

J_(tu)(x, u, w, t) vector function ∈ ^(m) partial derivative of J_(u) w.r.t time: $\frac{\partial J_{u}}{\partial t}$

J_(tw)(x, u, w, t) vector function ∈ ^(l) partial derivative of J_(w) w.r.t time: $\frac{\partial J_{w}}{\partial t}$

J_(xxx)(x, u, w, t) rank 3 function ∈ ^(n×n×n) 3^(rd) deriv. of J w.r.t. x: $\frac{\partial^{3}J}{\partial x^{3}}$

J_(xux)(x, u, w, t) rank 3 function ∈ ^(n×m×n) 3^(rd) deriv. of J w.r.t. x, u, x: $\frac{\partial^{3}J}{{\partial x}{\partial u}{\partial x}}$

J_(xwx)(x, u, w, t) rank 3 function ∈ ^(n×l×n) 3^(rd) deriv. of J w.r.t. x, w, x: $\frac{\partial^{3}J}{{\partial x}{\partial w}{\partial x}}$

J_(uux)(x, u, w, t) rank 3 function ∈ ^(m×m×n) 3^(rd) deriv. of J w.r.t. u, u, x: $\frac{\partial^{3}J}{{\partial u}{\partial u}{\partial x}}$

J_(wux)(x, u, w, t) rank 3 function ∈ ^(l×m×n) 3^(rd) deriv. of J w.r.t. w, u, x: $\frac{\partial^{3}J}{{\partial w}{\partial u}{\partial x}}$

J_(wwx)(x, u, w, t) rank 3 function ∈ ^(l×l×n) 3^(rd) deriv. of J w.r.t. w, w, x: $\frac{\partial^{3}J}{{\partial w}{\partial w}{\partial x}}$

J_(txx)(x, u, w, t) matrix function ∈ ^(n×n) partial deriv. of J_(xx) w.r.t time: $\frac{\partial J_{xx}}{\partial t}$

J_(txu)(x, u, w, t) matrix function ∈ ^(n×m) partial deriv. of J_(xu) w.r.t time: $\frac{\partial J_{xu}}{\partial t}$

J_(txw)(x, u, w, t) matrix function ∈ ^(n×l) partial deriv. of J_(xw) w.r.t time: $\frac{\partial J_{xw}}{\partial t}$

J_(tuu)(x, u, w, t) matrix function ∈ ^(m×m) partial deriv. of J_(uu) w.r.t time: $\frac{\partial J_{uu}}{\partial t}$

J_(twu)(x, u, w, t) matrix function ∈ ^(l×m) partial deriv. of J_(wu) w.r.t time: $\frac{\partial J_{wu}}{\partial t}$

J_(tww)(x, u, w, t) matrix function ∈ ^(l×l) partial deriv. of J_(ww) w.r.t time: $\frac{\partial J_{ww}}{\partial t}$

{dot over (J)}(x, u, w, t) scaler function total deriv. of J w.r.t. to time: $\frac{J}{t}$

{dot over (J)}_(x)(x, u, w, t) vector function ∈ ^(n) total deriv. of J_(x) w.r.t. to time: $\frac{J_{x}}{t}$

{dot over (J)}_(u)(x, u, w, t) vector function ∈ ^(m) total deriv. of J_(u) w.r.t. to time: $\frac{J_{u}}{t}$

{dot over (J)}_(w)(x, u, w, t) vector function ∈ ^(l) total deriv. of J_(w) w.r.t. to time: $\frac{J_{w}}{t}$

{dot over (J)}_(xx)(x, u, w, t) matrix function ∈ ^(n×n) total deriv. of J_(xx) w.r.t. to time: $\frac{J_{xx}}{t}$

{dot over (J)}_(uu)(x, u, w, t) matrix function ∈ ^(m×m) total deriv. of J_(uu) w.r.t. to time: $\frac{J_{uu}}{t}$

{dot over (J)}_(ww)(x, u, w, t) matrix function ∈ ^(l×l) total deriv. of J_(ww) w.r.t. to time: $\frac{J_{ww}}{t}$

{dot over (J)}_(xu)(x, u, w, t) matrix function ∈ ^(n×m) total derivative of J_(xu) w.r.t. to time: $\frac{J_{xu}}{t}$

{dot over (J)}_(wu)(x, u, w, t) matrix function ∈ ^(l×m) total derivative of J_(wu) w.r.t. to time: $\frac{J_{wu}}{t}$

{dot over (J)}_(xw)(x, u, w, t) matrix function ∈ ^(n×l) total derivative of J_(xw) w.r.t. to time: $\frac{J_{xw}}{t}$

{overscore (J)}(t) scaler function defined as J({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}_(x)(t) vector function ∈ ^(n) defined as J_(x)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}_(u)(t) vector function ∈ ^(m) defined as J_(u)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}_(w)(t) vector function ∈ ^(l) defined as J_(w)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}_(xx)(t) matrix function ∈ ^(n×n) defined as J_(xx)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}_(uu)(t) matrix function ∈ ^(m×m) defined as J_(uu)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}_(ww)(t) matrix function ∈ ^(l×l) defined as J_(ww)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}_(xu)(t) matrix function ∈ ^(n×m) defined as J_(xu)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}_(xw)(t) matrix function ∈ ^(n×l) defined as J_(xw)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}_(wu)(t) matrix function ∈ ^(l×m) defined as J_(wu)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}*(t) scaler function defined as J*(x, w, t). See J*({overscore (x)}, {overscore (w)}, t). {overscore (J)}*_(x)(t) vector function ∈ ^(n) defined as J*_(x)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}*_(xx)(t) matrix function ∈ ^(n×n) defined as J*_(xx)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}*_(xw)(t) matrix function ∈ ^(n×l) defined as J*_(xw)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}*_(xww)(t) rank 3 function ∈ ^(n×l×l) defined as J*_(xww)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}*_(xxx)(t) rank 3 function ∈ ^(n×n×n) defined as J*_(xww)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}*_(xxw)(t) rank 3 function ∈ ^(n×n×l) defined as J*_(xxw)({overscore (x)}(t), {overscore (u)}, {overscore (w)}, t) {overscore (J)}*_(t)(t) scaler function defined as $\frac{\partial{{\overset{\_}{J}}^{*}(t)}}{\partial t}$

{overscore (J)}*_(tx)(t) vector function ∈ ^(n) defined as $\frac{\partial{{\overset{\_}{J}}_{x}^{*}(t)}}{\partial t}$

{overscore (J)}*_(tw)(t) vector function ∈ ^(l) defined as $\frac{\partial{{\overset{\_}{J}}_{w}^{*}(t)}}{\partial t}$

{overscore (J)}*_(txx)(t) matrix function ∈ ^(n×n) defined as $\frac{\partial{{\overset{\_}{J}}_{xx}^{*}(t)}}{\partial t}$

{overscore (J)}*_(tww)(t) matrix function ∈ ^(l×l) defined as $\frac{\partial{{\overset{\_}{J}}_{ww}^{*}(t)}}{\partial t}$

{overscore (J)}*_(txw)(t) matrix function ∈ ^(n×l) defined as $\frac{\partial{{\overset{\_}{J}}_{xw}^{*}(t)}}{\partial t}$

{overscore ({dot over (J)})}*(t) scaler function defined as $\frac{{{\overset{\_}{J}}^{*}(t)}}{t}$

{overscore ({dot over (J)})}*_(x)(t) vector function ∈ ^(n) defined as $\frac{{{\overset{\_}{J}}_{x}^{*}(t)}}{t}$

{overscore ({dot over (J)})}*_(w)(t) vector function ∈ ^(l) defined as $\frac{{{\overset{\_}{J}}_{w}^{*}(t)}}{t}$

{overscore ({dot over (J)})}*_(xx)(t) vector function ∈ ^(n×n) defined as $\frac{{{\overset{\_}{J}}_{xx}^{*}(t)}}{t}$

{overscore ({dot over (J)})}*_(ww)(t) vector function ∈ ^(l×l) defined as $\frac{{{\overset{\_}{J}}_{ww}^{*}(t)}}{t}$

{overscore ({dot over (J)})}*_(xw)(t) vector function ∈ ^(n×l) defined as $\frac{{{\overset{\_}{J}}_{xw}^{*}(t)}}{t}$

Ĵ(δx, δu_(i), δw) scaler function quadratic part of J(x, u, w, t) expanded about {overscore (x)}, {overscore (u)}_(i), and {overscore (w)} at time t. See (131). Ĵ*(δx, δw) scaler function optimal value of J given δx and δw i.e. min_(δu) _(i) Ĵ(δx, δu_(i), δw) {overscore ({tilde over (J)})}_(w) vector ∈ ^(l) {overscore (J)}_(w)(t₀) after δx is eliminated. See (157) {overscore ({tilde over (J)})}_(ww) matrix ∈ ^(l×l) {overscore (J)}_(ww)(t₀) after δx is eliminated. See (157) {overscore ({tilde over (J)})}_(wu) matrix ∈ ^(l×m) {overscore (J)}_(wu)(t₀) after δx is eliminated. See (157) {tilde over (J)}*_(w) vector ∈ ^(l) {overscore (J)}*_(w)(t₀) after δx(t₀) is eliminated. See (275) {tilde over (J)}*_(ww) matrix ∈ ^(l×l) {overscore (J)}*_(ww)(t₀) after δx(t₀) is eliminated. See (276) J′(x, u_(i), w. ε, t) scaler function objective value accumulated from time t to time t_(N) using the damped feedback law (167) for periods i + 1, i + 2, . . ., N Ĵ′(δx, δw, ε, t_(i)) scaler function quadratic part of J′(x, u_(i), w, t_(i)) expanded about {overscore (x)}, {overscore (u)}_(i), and {overscore (w)} at time t_(i) after δu_(i) has been eliminated using (167) j integer scaler counting integer or variable subscript K(x, v, w, t) vector function ∈ ^(κ) equality constraint function: K = 0. {tilde over (K)}({tilde over (x)}, {tilde over (v)}, {tilde over (w)}, τ) vector function ∈ ^(κ) function K in normalized time units k integer scaler counting integer or variable subscript κ integer scaler number of equality constraints L(x, v, w, t) vector function ∈ ^(σ) inequality constraint function: L ≧ 0. {tilde over (L)}({tilde over (x)}, {tilde over (v)}, {tilde over (w)}, τ) vector function ∈ ^(σ) function L in normalized time units l integer scaler dimension of static parameter vector w M(t) scaler constant mass of i^(th) gravitating body M_(s)(t) scaler function mass of the spacecraft at time t. m integer scaler dimension of dynamic control parameter u m′ integer scaler dimension of dynamic control v N integer scaler number of periods n integer scaler dimension of system state x nv vector ∈ ^(m)′ factors of w[2] needed to convert each component of v to normalized time units nw vector ∈ ^(l) factors of w[2] needed to convert each component of w to normalized time units nx vector ∈ ^(n) factors of w[2] needed to convert each component of x to normalized time units P matrix ∈ ^(n×n) quadratic coefficient defined by (138) Q vector ∈ ^(n) quadratic coefficient defined by (138) R scaler quadratic coefficient defined by (138) R(ε) scaler function quadratic coefficient R resulting from using a damping factor of ε. See (171) set of real numbers used to define dimensions r(t) vector ∈ ³ separation of spacecraft and i^(th) planet r_(*) vector ∈ ³ separation of spacecraft and the Sun r_(Saturn)(t) vector function ∈ ³ separation of spacecraft and a target 1 a.u. beyond the orbit of Saturn S vector ∈ ^(l) quadratic coefficient defined by (138) σ integer scaler number of inequality constraints T(x, u, w, t) vector function ∈ ^(n) total derivative of the state x w.r.t time T_(x)(x, u, w, t) matrix function ∈ ^(n×n) derivative of T w.r.t. x: $\frac{\partial T}{\partial x}$

T_(u)(x, u, w, t) matrix function ∈ ^(n×m) derivative of T w.r.t. u: $\frac{\partial T}{\partial u}$

T_(w)(x, u, w, t) matrix function ∈ ^(n×l) derivative of T w.r.t. w: $\frac{\partial T}{\partial w}$

T_(xx)(x, u, w, t) rank 3 function ∈ ^(n×n×n) second derivative of T w.r.t. x: $\frac{\partial^{2}T}{\partial x^{2}}$

T_(uu)(x, u, w, t) rank 3 function ∈ ^(n×m×m) second derivative of T w.r.t. u: $\frac{\partial^{2}T}{\partial u^{2}}$

T_(ww)(x, u, w, t) rank 3 function ∈ ^(n×l×l) second derivative of T w.r.t. w: $\frac{\partial^{2}T}{\partial w^{2}}$

T_(xu)(x, u, w, t) rank 3 function ∈ ^(n×n×m) second derivative of T w.r.t. x, u: $\frac{\partial^{2}T}{{\partial x}{\partial u}}$

T_(xw)(x, u, w, t) rank 3 function ∈ ^(n×n×l) second derivative of T w.r.t. x, w: $\frac{\partial^{2}T}{{\partial x}{\partial w}}$

T_(uw)(x, u, w, t) rank 3 function ∈ ^(n×l×m) second derivative of T w.r.t. w, u: $\frac{\partial^{2}T}{{\partial w}{\partial u}}$

{tilde over (T)}({tilde over (x)}, {tilde over (v)}, {tilde over (w)}, τ) vector function ∈ ^(n) function T in normalized time units Trmax(r_(*)) scaler function maximum solar electric thrust at r_(*) t real scaler clock time t′ real scaler dummy variable (usually time.) t_(i) real scaler time marking end of period i t_(f) real scaler time marking end of trajectory (cont- inuous case, see Appendix B.) τ real scaler normalized time ${\tau = \frac{t - {w\lbrack 1\rbrack}}{w\lbrack 2\rbrack}},$

0 ≦ τ ≦ 1 τ_(i) real scaler normalized time at end of period i U_(G) scaler constant universal gravitation constant u_(i) vector ∈ ^(m) dynamic parameter vector for period i {overscore (u)}_(i) vector ∈ ^(m) i^(th) nominal dynamic parameter vector v(t) vector function ∈ ^(m) dynamic control vector {overscore (v)}(t) vector function ∈ ^(m)′ nominal dynamic control vector {tilde over (v)}(τ) vector function of dynamic control vector in normalized normalized time ∈ ^(m)′ units as a function of normalized time W matrix ∈ ^(l×l) quadratic coefficient defined by (138) w vector ∈ ^(l) static parameter vector {overscore (w)} vector ∈ ^(l) nominal static parameter vector {tilde over (w)} vector ∈ ^(l) static parameter vector in normalized time units x(t) vector function ∈ ^(n) state vector {overscore (x)}(t) vector function ∈ ^(n) nominal state obtained by integrating the state equation with {overscore (v)} and {overscore (w)} {dot over (x)}(t) vector function ∈ ^(n) time derivative of state vector: $\frac{x}{t}$

{tilde over (x)}(τ) vector function of state vector in normalized time units normalized time ∈ ^(n) as a function of normalized time τ ξ vector ∈ ^(m) defined to be ξ ≐ δu*₁ Y matrix ∈ ^(n×l) quadratic coefficient defined by (138)

Appendix B: The SDC Algorithm For the Fully Continuous Formulation

A fully continuous formulation of the SDC process assumes that the dynamic optimization variables are continuous functions of time. A fully continuous SDC process is best suited to problems like solar sail spacecraft, electrical engineering problems, and laser proplulsion) trajectory optimization where the mechanical control is best described as a time continuous function. A frilly continuous SDC formulation allows the dynamic control vector v(t) to vary in a non-parametric continuous fashion. The period function dynamic limitation equation (5) is not used.

Subsection 1 of Appendix B presents the theoretical basis for a fully continuous SDC algorithm. Subsection 2 of Appendix B presents the steps of a fully continuous formulation of the SDC algorithm.

1. The Theoretical Basis of the Fully Continuous SDC Algorithm

The continuous SDC algorithm is constructed as follows. Appendix A contains variable definitions. The fully continuous SDC formulation optimizes a user specified useful objective J: $\begin{matrix} {{{J\left( {v,w} \right)} = {{\int_{t_{0}}^{t_{f}}{{F\left( {{x(t)},{v(t)},w,t} \right)}{t}}} + {G\left( {{x\left( t_{f} \right)},{v\left( t_{f} \right)},w,t_{f}} \right)}}},} & (182) \end{matrix}$

or a mathematical equivalent. Both t₀<t_(f) and t₀>t_(f) are within the scope of the SDC fully continuous formulation. J(v, w) is subject to the state equation: $\begin{matrix} {\frac{{x(t)}}{t} = {{{T\left( {{x(t)},{v(t)},w,t} \right)}\quad {x\left( {t = t_{0}} \right)}} = {{\Gamma (w)}.}}} & (183) \end{matrix}$

The function Γ(w) is an initial condition on x(t) if t₀<t_(f) and a terminal condition on x(t) if t₀>t_(f). The formulation (182)-(183) differs from Equations (27)-(30) because no dynamic limitation equation (30) is assumed. The dynamic control vector v(t) is riot assumed to be a parameterized function. The control parameters u and the functions ƒ do not appear in the fully continuous formulation of SDC. The dynamic control v(t) can be any continuous function of time in the formulation (182)-(183). This subsection applies to SDC problems of non-parametric type.

The optimal objective value accumulated from time t to t_(f), given a state x(t) at time t and a static parameter value w, can be defined:

J*(x, w, t)≐min_(v)(t′):t′=t to t _(f) {∫_(t) ^(t) ^(_(f)) F(x(t′), v(t′), w, t′)dt′+G(x(t _(f)), v(t _(f)), w, t _(f))}.  (184)

The symbol ≐ is read “defined to be.” The optimal objective J* in Equation (184) is optimized only with respect to the dynamic control v(t′) for t′=t to t_(f). The static parameter vector w is an independent variable at this stage. If the optimization of J is a maximization of J, then “min” is replaced with “max” in Equation (184). The interval of integration in Equation (184) can be split as follows:

J*(x, w, t)=min_(v(t′):t′=t to t) _(f) {∫_(t) ^(t+Δt) Fdt′+∫ _(t+Δt) ^(t) ^(_(f)) Fdt′+G}.  (185)

The principal of optimality requires v(t′) for t=t+Δt to t_(f) to be an optimal trajectory starting at t+Δt given w and x(t+Δt). Substituting t=t+Δt into the definition equation (184) yields:

J*(x, w, t+Δt)=min_(v(t′):t′=t +Δt to t) _(f) {∫_(t+Δt) ^(t) ^(_(f)) F(x(t′), v(t′), w, t′)dt′+G(x(t _(f)), v(t _(f)), w, t _(f))}.  (186)

If Equation (186) is substituted into Equation (185) the result is:

J*(x, w, t)=min_(v(t′):t′=t to t+Δ){∫_(t) ^(t+Δt) F(x(t′), v(t′), w, t′)dt′+J*(x(t+Δt), w, t+Δt)}  (187)

The minimization in Equation (187) is over the interval t to t+Δt whereas the minimization in Equation (185) is over the interval t to t_(f). The minimization over the interval t+Δt to t_(f) in Equation (187) is implicit in the term J*(x(t+Δt), w, t+Δt). Since the state x(t+Δt) is determined by the choice of v(t′) for t′=t to t+Δt, it follows that J*(x(t+Δt), w, t+Δt) is a function of v(t′) for t′=t to t+Δt.

The Taylor series expansion of J(x(t+Δt), w, t+Δt) about the time t is:

J*(x(t+Δt), w, t+Δt)=J*(x(t), w, t)+(J _(t) *+J _(x) ^(*t) {dot over (x)}+J _(w) ^(*t) {dot over (w)})Δt+O(Δt ²),  (188)

where J_(t)*εR, J_(x)*εR^(n), and J_(w)*R^(l) are partial derivatives of J* with respect to t, x, and w.

The superscript t denotes the transpose operation. The time derivative {dot over (w)} is zero because w is not a function of time. The derivative {dot over (x)} is already defined as T(x, ƒ(u_(N), w, t, N), w, t) by Equation (183) so Equation (188) can be written:

J*(x(t+Δt), w, t+Δt)=J*(x(t), w, t)+J _(t) *Δt+J _(x) ^(*t) TΔt+O(Δt ²).  (189)

If Equation (189) is substituted into Equation (187) and the term J*(x(t), w, t) appearing on the left and right hand sides is cancelled the result is:

−J _(t) *Δt=min_(v(t′):t′=t to t+Δt){∫_(t) ^(t+Δt) F(x(t′), v(t′), w, t′)dt′+J _(x) ^(*t) TΔt+O(Δt ²)}.  (190)

If Equation (190) is divided by Δt and Δt→0, the result is:

−J _(t)*(x, w, t)=min_(v(t)) {F(x, v(t), w, t)+i J_(x) ^(*t)(x, w, t)T(x, v(t), w, t)}.  (191)

Equation (191) is a variation of the Hamiltonian-Jacobi-Bellman equation. The time interval of the minimization in Equation (191) is now a single point in time t. Equation (191) is an instantaneous property at time t of all optimal dynamic control trajectories given an arbitrary static parameter vector w and an arbitrary state x.

The instantaneous property equation (191) can be used to calculate instantaneous up-dates to improve sub-optimal dynamic control trajectories. To proceed, the following definitions are made:

δx≐x(t)−{overscore (x)}(t)  (192)

δv≐v(t)−{overscore (v)}(t)  (193)

δw≐w−{overscore (w)},  (194)

where {overscore (x)}(t) is the nominal or known state, x(t) is an arbitrary state, {overscore (v)}(t) and {overscore (w)} are nominal values for the dynamic and static controls, w is an arbitrary static parameter vector, and v(t) is the desired value of the dynamic control vector at time instant t. If Equations (192)-(194) are substituted into Equation (191), the result is:

−J _(t)*({overscore (x)}+δx, {overscore (w)}δw, t)=min_(δv) {F({overscore (x)}+δx, {overscore (v)}+δv, {overscore (w)}+δw, t)+J _(x) ^(*t)({overscore (x)}+δx, {overscore (w)}+δw, t)T({overscore (x)}+δx, {overscore (v)}+δv, {overscore (w)}+δw, t)}.  (195)

What is needed is an expression which gives δv as a function of δw and δx. In order to arrive at an expression, the Taylor series expansions of F, J_(t)*, J_(x)*, and T about {overscore (x)}, {overscore (v)} and {overscore (w)} are constructed as follows:

F({overscore (x)}+δx, {overscore (v)}+δv, {overscore (w)}

+δw, t)={overscore (F)}+{overscore (F)} _(x) ^(t) δ

x+{overscore (F)}_(v) ^(t) δv+{overscore (F)} _(w) ^(t) δ

w+½δx ^(t) {overscore (F)} _(xx)

δx+½δv ^(t) {overscore (F)} _(vv) δ

v+½δw ^(t) {overscore (F)} _(ww) δw+

δx^(t) {overscore (F)} _(xv) δv+δx ^(t) {overscore (F)} _(xw)

δw+δw^(t) {overscore (F)} _(wv) δv+H.O.T.

  (196)

J _(t)*({overscore (x)}+δx, {overscore (w)}+δw, t)={overscore (J)} _(t) *+{overscore (J)} _(tx) ^(*t) δx+{overscore (J)} _(tw) ^(*t) δw+½δx ^(t) {overscore (J)} _(txx) *δx+½δw ^(t) {overscore (J)} _(ww) *δw+δx ^(t) {overscore (J)} _(txw) *δw+H.O.T.  (197)

$\begin{matrix} {{J_{x}^{*}\left( {{\overset{\_}{x} + {\delta \quad x}},{\overset{\_}{w} + {\delta \quad w}},t} \right)} = {{\overset{\_}{J}}_{x}^{*} + {{\overset{\_}{J}}_{xx}^{*}\delta \quad x} + {{\overset{\_}{J}}_{xw}^{*}\delta \quad w} + {\frac{1}{2}{\sum\limits_{i = 1}^{n}{\sum\limits_{j = 1}^{n}{\delta \quad {x\lbrack i\rbrack}\quad {{\overset{\_}{J}}_{xxx}^{*}\left\lbrack {:{,i,j}} \right\rbrack}\quad \delta \quad {x\lbrack j\rbrack}}}}} + {\frac{1}{2}{\sum\limits_{i = 1}^{l}{\sum\limits_{j = 1}^{l}{\delta \quad {w\lbrack i\rbrack}{{\overset{\_}{J}}_{xww}^{*}\left\lbrack {:{,i,j}} \right\rbrack}\delta \quad {w\lbrack j\rbrack}}}}} + {\sum\limits_{i = 1}^{n}{\sum\limits_{j = 1}^{l}{\delta \quad {x\lbrack i\rbrack}\quad {{\overset{\_}{J}}_{xxw}^{*}\left\lbrack {:{,i,j}} \right\rbrack}\quad \delta \quad {w\lbrack j\rbrack}}}} + {H.O.T.}}} & (198) \\ {{T\left( {{\overset{\_}{x} + {\delta \quad x}},{\overset{\_}{v} + {\delta \quad v}},{\overset{\_}{w} + {\delta \quad w}},t} \right)} = {{\overset{\_}{T} + {{\overset{\_}{T}}_{x}\delta \quad x} + \quad {{\overset{\_}{T}}_{v}\delta \quad v} + \quad {{\overset{\_}{T}}_{w}\delta \quad w} + {\frac{1}{2}{\sum\limits_{i = 1}^{n}{\sum\limits_{j = 1}^{n}{\delta \quad {x\lbrack i\rbrack}\quad {{\overset{\_}{T}}_{xx}\left\lbrack {:{,i,j}} \right\rbrack}\quad \delta \quad {x\lbrack j\rbrack}}}}} + {\frac{1}{2}{\sum\limits_{i = 1}^{m^{\prime}}{\sum\limits_{j = 1}^{m^{\prime}}{\delta \quad {v\lbrack i\rbrack}{{\overset{\_}{T}}_{vv}\left\lbrack {:{,i,j}} \right\rbrack}\quad \delta \quad {v\lbrack j\rbrack}}}}} + {\frac{1}{2}{\sum\limits_{i = 1}^{l}{\sum\limits_{j = 1}^{l}{\delta \quad {w\lbrack i\rbrack}{{\overset{\_}{T}}_{ww}\left\lbrack {:{,i,j}} \right\rbrack}\quad \delta \quad {w\lbrack j\rbrack}}}}} + {\sum\limits_{i = 1}^{n}{\sum\limits_{j = 1}^{m^{\prime}}{\delta \quad {x\lbrack i\rbrack}{{\overset{\_}{T}}_{xv}\left\lbrack {:{,i,j}} \right\rbrack}\quad \delta \quad {v\lbrack j\rbrack}}}} + {\sum\limits_{i = 1}^{n}{\sum\limits_{j = 1}^{l}{\delta \quad {x\lbrack i\rbrack}\quad {{\overset{\_}{T}}_{xw}\left\lbrack {:{,i,j}} \right\rbrack}\quad \delta \quad {w\lbrack j\rbrack}}}} + {\sum\limits_{i = 1}^{l}{\sum\limits_{j = 1}^{m^{\prime}}{\delta \quad {w\lbrack i\rbrack}{{\overset{\_}{T}}_{wv}\left\lbrack {:{,i,j}} \right\rbrack}\quad \delta \quad {v\lbrack j\rbrack}}}} + {H.O.T.}}}} & (199) \end{matrix}$

If Equations (196)-(199) are substituted into Equation (195), and higher order terms are neglected, the result is $\begin{matrix} {{{- {\overset{\_}{J}}_{t}^{*}} - {{\overset{\_}{J}}_{tx}^{*t}\delta \quad x} - {{\overset{\_}{J}}_{tw}^{*t}\delta \quad w} - {\frac{1}{2}\delta \quad x^{t}{\overset{\_}{J}}_{txx}^{*}\delta \quad x} - {\frac{1}{2}\delta \quad w^{t}{\overset{\_}{J}}_{tww}^{*}\delta \quad w} - {\delta \quad x^{t}{\overset{\_}{J}}_{txw}^{*}\delta \quad w}} = {\min\limits_{\delta \quad u}\quad \left\{ {{C_{0} + {C_{1}^{t}\delta \quad x} + {C_{2}^{t}\delta \quad v} + {C_{3}^{t}\delta \quad w} + {\frac{1}{2}\delta \quad x^{t}C_{4}\delta \quad x} + {\frac{1}{2}\delta \quad v^{t}C_{5}\delta \quad v} + {\frac{1}{2}\delta \quad w^{t}C_{6}\delta \quad w}},{{{+ \delta}\quad x^{t}C_{7}\delta \quad v} + {\delta \quad x^{t}C_{8}\delta \quad w} + {\delta \quad w^{t}C_{9}\delta \quad v}}} \right\}}} & (200) \end{matrix}$

where:

C ₀ ={overscore (F)}+{overscore (J)} _(x) ^(*t) {overscore (T)}  (201)

C ₁ ={overscore (F)} _(x) +{overscore (T)} _(x) ^(t) {overscore (J)} _(x) *+{overscore (J)} _(xx) *{overscore (T)}  (202)

C ₂ ={overscore (F)} _(v) +{overscore (T)} _(v) ^(t) {overscore (J)} _(x)*  (203)

C ₃ ={overscore (F)} _(w) +{overscore (T)} _(w) ^(t) {overscore (J)} _(x) *+{overscore (J)} _(xw) ^(*t) {overscore (T)}  (204)

$\begin{matrix} \begin{matrix} {C_{4} = \quad {{\overset{\_}{F}}_{xx} + {{\overset{\_}{J}}_{xx}^{*}{\overset{\_}{T}}_{x}} + {{\overset{\_}{T}}_{x}^{t}{\overset{\_}{J}}_{xx}^{*}} +}} \\ {\quad {{\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{xx}\left\lbrack {i,{:{,:}}} \right\rbrack}}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{xxx}^{*}\left\lbrack {i,{:{,:}}} \right\rbrack}{\overset{\_}{T}\lbrack i\rbrack}}}}} \end{matrix} & (205) \\ {C_{5} = {{\overset{\_}{F}}_{vv} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{vv}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (206) \\ \begin{matrix} {C_{6} = \quad {{\overset{\_}{F}}_{ww} + {{\overset{\_}{J}}_{xw}^{*t}{\overset{\_}{T}}_{w}} + {{\overset{\_}{T}}_{w}^{t}{\overset{\_}{J}}_{xw}^{*}} +}} \\ {\quad {{\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{ww}\left\lbrack {i,{:{,:}}} \right\rbrack}}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{xww}^{*}\left\lbrack {i,{:{,:}}} \right\rbrack}{\overset{\_}{T}\lbrack i\rbrack}}}}} \end{matrix} & (207) \\ {C_{7} = {{\overset{\_}{F}}_{xv} + {{\overset{\_}{J}}_{xx}^{*}{\overset{\_}{T}}_{v}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{xv}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (208) \\ \begin{matrix} {C_{8} = \quad {{\overset{\_}{F}}_{xw} + {{\overset{\_}{J}}_{xx}^{*}{\overset{\_}{T}}_{w}} + {{\overset{\_}{T}}_{x}^{t}{\overset{\_}{J}}_{xw}^{*}} +}} \\ {\quad {{\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{xw}\left\lbrack {i,{:{,:}}} \right\rbrack}}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{xxw}^{*}\left\lbrack {i,{:{,:}}} \right\rbrack}{\overset{\_}{T}\lbrack i\rbrack}}}}} \end{matrix} & (209) \\ {C_{9} = {{\overset{\_}{F}}_{wv} + {{\overset{\_}{J}}_{xw}^{*t}{\overset{\_}{T}}_{v}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{{\overset{\_}{T}}_{wv}\left\lbrack {i,{:{,:}}} \right\rbrack}.}}}}} & (210) \end{matrix}$

The necessary condition of optimality applied to the right hand side of Equation (200) is: $\begin{matrix} {{\nabla_{v}\left( {C_{0} + {C_{1}^{t}\delta \quad x} + {C_{2}^{t}\delta \quad v} + {C_{3}^{t}\delta \quad w} + {\frac{1}{2}\delta \quad x^{t}C_{4}\delta \quad x} + {\frac{1}{2}\delta \quad v^{t}C_{5}\delta \quad v} + {\frac{1}{2}\delta \quad w^{t}C_{6}\delta \quad w} + {\delta \quad x^{t}C_{7}\delta \quad v} + {\delta \quad x^{t}C_{8}\delta \quad w} + {\delta \quad w^{t}C_{9}\delta \quad v}} \right)} = 0.} & (211) \end{matrix}$

The necessary condition requires that C₅ is positive definite (or negative definite if J is to be maximized.) If C₅ is not positive definite, then a shift is required. For example, a shift can be computed using a variation of the trust region method. The necessary condition equation (211) can be reduced to

C ₂ +C ₅ δv+C ₇ ^(t) δx+C ₉ ^(t) δw=0.  (212)

Solving for δv in Equation (212) yields,

δv=−C ₅ ⁻¹ C ₂ −C ₅ ⁻¹ C ₇ ^(t) δx−C ₅ ⁻¹ C ₉ ^(t) δw.  (213)

With the definitions,

α(t)≐−C ₅ ⁻¹ C ₂  (214)

β(t)≐−C ₅ ⁻¹ C ₇ ^(t)  (215)

γ(t)≐−C ₅ ⁻¹ C ₉ ^(t),  (216)

the optimal feedback law for time t can be written

δv=α(t)+β(t)δx+γ(t)δw.  (217)

The feedback law equation (217) can be used to improve the nominal control {overscore (v)}(t) at the single time instant t.

In order to improve the nominal control for other times; α(t), β(t), and γ(t) must be calculated for other times. To calculate α(t), β(t), and γ(t) at all times t, a system of equations is needed to provide C_(i) for all times t in (t ₀, t_(f)). If Equation (217) is substituted into Equation (200) the result is, $\begin{matrix} {{{- {\overset{\_}{J}}_{t}^{*}} - {{\overset{\_}{J}}_{tx}^{*t}\delta \quad x} - {{\overset{\_}{J}}_{tw}^{*t}\delta \quad w} - {\frac{1}{2}\delta \quad x^{t}{\overset{\_}{J}}_{txx}^{*}\delta \quad x} - {\frac{1}{2}\delta \quad w^{t}{\overset{\_}{J}}_{tww}^{*}\delta \quad w} - {\delta \quad x^{t}{\overset{\_}{J}}_{txw}^{*}\delta \quad w}} = \quad {\left( {C_{0} + {C_{2}^{t}\alpha} + {\frac{1}{2}\alpha^{t}C_{5}\alpha}} \right) + {\left( {C_{1}^{t} + {C_{2}^{t}\beta} + {\alpha^{t}C_{5}\beta} + {\alpha^{t}C_{7}^{t}}} \right)\delta \quad x} + {\left( {{C_{2}^{t}\gamma} + C_{3}^{t} + {\alpha^{t}C_{5}\gamma} + {\alpha^{t}C_{9}^{t}}} \right)\delta \quad w} + {\frac{1}{2}\delta \quad {x^{t}\left( {C_{4} + {\beta^{t}C_{5}\beta} + {C_{7}\beta} + {\beta^{t}C_{7}^{t}}} \right)}\delta \quad x} + {\frac{1}{2}\delta \quad {w^{t}\left( {{\gamma^{t}C_{5}\gamma} + C_{6} + {C_{9}\gamma} + {\gamma^{t}C_{9}^{t}}} \right)}\delta \quad w} + {\delta \quad {x^{t}\left( {{\beta^{t}C_{5}\gamma} + {C_{7}\gamma} + C_{8} + {\beta^{t}C_{9}^{t}}} \right)}\delta \quad {w.}}}} & (218) \end{matrix}$

If like coefficients in Equation (218) are equated, then the following set of equations is obtained:

−{overscore (J)} _(t) *=C ₀ +C ₂ ^(t)α+½α^(t) C ₅α  (219)

−{overscore (J)} _(tx) *=C ₁+β^(t) C ₂+β^(t) C ₅ α+C ₇α  (220)

−{overscore (J)} _(tw)*=γ^(t) C ₂ +C ₃+γ^(t) C ₅ α+C ₉α  (221)

−{overscore (J)} _(txx) *=C ₄+β^(t) C ₅ β+C ₇β+β^(t) C ₇ ^(t)  (222)

−{overscore (J)} _(tww)*=γ^(t) C ₅ γ+C ₆ +C ₉γ+γ^(t) C ₉ ^(t)  (223)

−{overscore (J)} _(txw)*=β^(t) C ₅ γ+C ₇ γ+C ₈+β^(t) C ₉ ^(t)  (224)

The definition equations (214)-(216) can be used to eliminate α, β, and γin Equations (219)-(224) to obtain:

−{overscore (J)} _(t) *=C ₀−½C ₂ ^(t) C ₅ ⁻¹ C ₂  (225)

−{overscore (J)} _(tx) *=C ₁ −C ₇ C ₅ ⁻¹ C ₂  (226)

−{overscore (J)} _(tw) *=C ₃ −C ₉ C ₅ ⁻¹ C ₂  (227)

−{overscore (J)} _(txx) *=C ₄ −C ₇ C ₅ ⁻¹ C ₇ ^(t)  (228)

−{overscore (J)} _(tww) *=C ₆ −C ₉ C ₅ ⁻¹ C ₉ ^(t)  (229)

−{overscore (J)} _(txw) *=C ₈ −C ₇ C ₅ ⁻¹ C ₉ ^(t).  (230)

Equations (225)-(230) are not in an integratable from because they involve partial derivatives with respect to time. To obtain integratable equations, the total time derivative is required. The total time derivative of {overscore (J)}* is $\begin{matrix} {{\frac{{{\overset{\_}{J}}^{*}\left( {{\overset{\_}{x}(t)},\overset{\_}{w},t} \right)}\quad}{t} \doteq \overset{.}{{\overset{\_}{J}}^{*}}} = {\frac{\partial{\overset{\_}{J}}^{*}}{\partial t} + {\frac{\partial{\overset{\_}{J}}^{*t}}{\partial x}{\frac{x}{t}.}}}} & (231) \end{matrix}$

Substituting Equation (183) into Equation (231) yields

{overscore ({dot over (J)})}*={overscore (J)} _(t) *+{overscore (J)} _(x) ^(*t) {overscore (T)}.  (232)

Similarly,

{overscore ({dot over (J)})} _(x) *={overscore (J)} _(tx) *+{overscore (J)} _(xx) *{overscore (T)}.  (233)

{overscore ({dot over (J)})} _(w) *={overscore (J)} _(tw) *+{overscore (J)} _(xw) ^(*t) {overscore (T)}.  (234)

$\begin{matrix} {{\overset{.}{\overset{\_}{J}}}_{xx}^{*} = {{\overset{\_}{J}}_{txx}^{*} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{xxx}^{*}\left\lbrack {i,{:{,:}}} \right\rbrack}{\overset{\_}{T}\quad\lbrack i\rbrack}}}}} & (235) \\ {{\overset{.}{\overset{\_}{J}}}_{ww}^{*} = {{\overset{\_}{J}}_{tww}^{*} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{xww}^{*}\left\lbrack {i,{:{,:}}} \right\rbrack}{\overset{\_}{T}\quad\lbrack i\rbrack}}}}} & (236) \\ {{\overset{.}{\overset{\_}{J}}}_{xw}^{*} = {{\overset{\_}{J}}_{txw}^{*} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{xxw}^{*}\left\lbrack {i,{:{,:}}} \right\rbrack}{{\overset{\_}{T}\quad\lbrack i\rbrack}.}}}}} & (237) \end{matrix}$

Substituting Equations (232)-(237) into Equations (225)-(230) and solving for the total time derivatives results in the following integratable system of equations: $\begin{matrix} {{- \overset{.}{{\overset{\_}{J}}^{*}}} = {C_{0} - {\frac{1}{2}C_{2}^{t}C_{5}^{- 1}C_{2}} - {{\overset{\_}{J}}^{*t}\overset{\_}{T}}}} & (238) \end{matrix}$

 {overscore ({dot over (J)})} _(x) *=C ₁ −C ₇ C ₅ ⁻¹ C ₂ −{overscore (J)} _(xx) *{overscore (T)}  (239)

 {overscore ({dot over (J)})} _(w) *=C ₃ −C ₉ C ₅ ⁻¹ C ₂ −{overscore (J)} _(xw) ^(*t) *{overscore (T)}  (240)

$\begin{matrix} {{- {\overset{.}{\overset{\_}{J}}}_{xx}^{*}} = {C_{4} - {C_{7}C_{5}^{- 1}C_{7}^{t}} - {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{xxx}^{*}\left\lbrack {i,{:{,:}}} \right\rbrack}{\overset{\_}{T}\quad\lbrack i\rbrack}}}}} & (241) \\ {{- {\overset{.}{\overset{\_}{J}}}_{ww}^{*}} = {C_{6} - {C_{9}C_{5}^{- 1}C_{9}^{t}} - {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{xww}^{*}\left\lbrack {i,{:{,:}}} \right\rbrack}{\overset{\_}{T}\quad\lbrack i\rbrack}}}}} & (242) \\ {{- {\overset{.}{\overset{\_}{J}}}_{xw}^{*}} = {C_{8} - {C_{7}C_{5}^{- 1}C_{9}^{t}} - {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{xxw}^{*}\left\lbrack {i,{:{,:}}} \right\rbrack}{{\overset{\_}{T}\quad\lbrack i\rbrack}.}}}}} & (243) \end{matrix}$

The last term on the right hand sides of Equations (238)-(243) cancels a term which is part of the definition of C₀, C₁, C₃, C₄, C₆, and C₈ in Equations (201), (202), (204), (205), (207), and (209) respectively. Thus the coefficients C_(i) can be redefined as follows:

C ₀(t)={overscore (F)}  (244)

C ₁(t)={overscore (F)} _(x) +{overscore (T)} _(x) ^(t) {overscore (J)} _(x)*  (245)

C ₂(t)={overscore (F)} _(v) +{overscore (T)} _(v) ^(t) {overscore (J)} _(x)*  (246)

C ₃(t)={overscore (F)} _(w) +{overscore (T)} _(w) ^(t) {overscore (J)} _(x)*  (247)

$\begin{matrix} {{C_{4}(t)} = {{\overset{\_}{F}}_{xx} + {{\overset{\_}{J}}_{xx}^{*}{\overset{\_}{T}}_{x}} + {{\overset{\_}{T}}_{x}^{t}{\overset{\_}{J}}_{xx}^{*}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{xx}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (248) \\ {{C_{5}(t)} = {{\overset{\_}{F}}_{vv} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{vv}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (249) \\ {{C_{6}(t)} = {{\overset{\_}{F}}_{ww} + {{\overset{\_}{J}}_{xw}^{*t}{\overset{\_}{T}}_{w}} + {{\overset{\_}{T}}_{w}^{t}{\overset{\_}{J}}_{xw}^{*}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{ww}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (250) \\ {{C_{7}(t)} = {{\overset{\_}{F}}_{xv} + {{\overset{\_}{J}}_{xx}^{*}{\overset{\_}{T}}_{v}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{xv}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (251) \\ {{C_{8}(t)} = {{\overset{\_}{F}}_{xw} + {{\overset{\_}{J}}_{xx}^{*}{\overset{\_}{T}}_{w}} + {{\overset{\_}{T}}_{x}^{t}{\overset{\_}{J}}_{xw}^{*}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{xw}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (252) \\ {{C_{9}(t)} = {{\overset{\_}{F}}_{wv} + {{\overset{\_}{J}}_{xw}^{*t}{\overset{\_}{T}}_{v}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{{\overset{\_}{T}}_{wv}\left\lbrack {i,{:{,:}}} \right\rbrack}.}}}}} & (253) \end{matrix}$

With the definition equations (238)-(243), Equations (254)-(259) become

−{overscore ({dot over (J)})}*(t)=C ₀−½C ₂ ^(t) C ₅ ⁻¹ C ₂  (254)

−{overscore ({dot over (J)})} _(x)*(t)=C ₁ −C ₇ C ₅ ⁻¹ C ₂  (255)

−{overscore ({dot over (J)})} _(w)*(t)=C ₃ −C ₉ C ₅ ⁻¹ C ₂  (256)

−{overscore ({dot over (J)})} _(xx)*(t)=C ₄ −C ₇ C ₅ ⁻¹ C ₇ ^(t)  (257)

−{overscore ({dot over (J)})} _(ww)*(t)=C ₆ −C ₉ C ₅ ⁻¹ C ₉ ^(t)  (258)

−{overscore ({dot over (J)})} _(xw)*(t)=C ₈ −C ₇ C ₅ ⁻¹ C ₉ ^(t)  (259)

The system of ordinary differential equations (254)-(259) with the definition equations (244)-(253) provide a means to compute α(t), β(t), and γ(t) at any time t between t₀ and t_(f). The system can be integrated in time from t_(f) to t₀. What is required to start the integration is a set of conditions which specify {overscore ({dot over (J)})}*(t _(f)), {overscore ({dot over (J)})}_(x)*(t _(f)), {overscore ({dot over (J)})}_(w)*(t _(f)), {overscore ({dot over (J)})}_(xx)*(t _(f)), {overscore ({dot over (J)})}_(ww)*(t _(f)), and {overscore ({dot over (J)})}_(xw)*(t _(f)). In order to derive the correct conditions, t=t_(f) is substituted into Equation (184) to obtain: $\begin{matrix} {{J^{*}\left( {x,w,t_{f}} \right)} = {\min\limits_{v{(t_{f})}}\left\{ {G\left( {{x\left( t_{f} \right)},{v\left( t_{f} \right)},w,t_{f}} \right)} \right\}}} & (260) \end{matrix}$

The next step is to expand J* and G about the nominal state and control {overscore (x)}, {overscore (t)}, and {overscore (w)}: $\begin{matrix} \begin{matrix} {{J^{*}\left( {{\delta \quad x},{\delta \quad w},t_{f}} \right)} = \quad {{\overset{\_}{J}}^{*} + {{\overset{\_}{J}}_{x}^{*}\delta \quad x} + {{\overset{\_}{J}}_{w}^{*}\delta \quad w} + {\frac{1}{2}\delta \quad x^{t}{\overset{\_}{J}}_{xx}^{*}\delta \quad x} +}} \\ {\quad {{\frac{1}{2}\delta \quad w^{t}{\overset{\_}{J}}_{ww}^{*}\delta \quad w} + {\delta \quad x^{t}{\overset{\_}{J}}_{xw}^{*}\delta \quad w} + {H.O.T.}}} \end{matrix} & (261) \end{matrix}$

 G(δx, δv, δw, t _(f))={overscore (G)}

+{overscore (G)}_(x) ^(t) δx+{overscore (G)} _(v) ^(t)

δv+{overscore (G)}_(w) ^(t) δw+½

δx^(t) {overscore (G)} _(xx) δx+½

δv^(t) {overscore (G)} _(vv) δv+½

δw^(t) {overscore (G)} _(ww) δw+δx ^(t)

{overscore (G)}_(xv) δv+δx ^(t) {overscore (G)} _(xw)

δw+δw^(t) {overscore (G)} _(wv) δv

+H.O.T.  (262)

If Equations (261) and (262) are substituted into Equation (260) the result is: $\begin{matrix} {{{\overset{\_}{J}}^{*} + {{\overset{\_}{J}}_{x}^{*}\delta \quad x} + {{\overset{\_}{J}}_{w}^{*}\delta \quad w} + {\frac{1}{2}\delta \quad x^{t}{\overset{\_}{J}}_{xx}^{*}\delta \quad x} + {\frac{1}{2}\delta \quad w^{t}{\overset{\_}{J}}_{ww}^{*}\delta \quad w} + {\delta \quad x^{t}{\overset{\_}{J}}_{xw}^{*}\delta \quad w} + {H.O.T.}} = {\min\limits_{\delta \quad v}\quad {\begin{Bmatrix} {\overset{\_}{G} + {{\overset{\_}{G}}_{x}^{t}\delta \quad x} + {{\overset{\_}{G}}_{v}^{t}\delta \quad v} + {{\overset{\_}{G}}_{w}^{t}\delta \quad w} + {\frac{1}{2}\delta \quad x^{t}{\overset{\_}{G}}_{xx}\delta \quad x} + {\frac{1}{2}\delta \quad v^{t}{\overset{\_}{G}}_{vv}\delta \quad v} +} \\ {{\frac{1}{2}\delta \quad w^{t}{\overset{\_}{G}}_{ww}\delta \quad w} + {\delta \quad x^{t}{\overset{\_}{G}}_{xv}\delta \quad v} + {\delta \quad x^{t}{\overset{\_}{G}}_{xw}\delta \quad w} + {\delta \quad w^{t}{\overset{\_}{G}}_{wv}\delta \quad v} + {H.O.T.}} \end{Bmatrix}.}}} & (263) \end{matrix}$

The necessary condition of optimality for Equation (263) is

0={overscore (G)} _(v) +{overscore (G)} _(vv) δv+{overscore (G)} _(xv) ^(t) δx+{overscore (G)} _(wv) ^(t) δw.  (264)

The condition equation (264) can be used to eliminate δv in Equation (263) to obtain: $\begin{matrix} {{{\overset{\_}{J}}^{*} + {{\overset{\_}{J}}_{x}^{*}\delta \quad x} + {{\overset{\_}{J}}_{w}^{*}\delta \quad w} + {\frac{1}{2}\delta \quad x^{t}{\overset{\_}{J}}_{xx}^{*}\delta \quad x} + {\frac{1}{2}\delta \quad w^{t}{\overset{\_}{J}}_{ww}^{*}\delta \quad w} + {\delta \quad x^{t}{\overset{\_}{J}}_{xw}^{*}\delta \quad w} + {H.O.T.}} = \quad {\begin{Bmatrix} {\overset{\_}{G} - {\frac{1}{2}{\overset{\_}{G}}_{v}^{t}{\overset{\_}{G}}_{vv}^{- 1}{\overset{\_}{G}}_{v}} + {\left( {{\overset{\_}{G}}_{x}^{t} - {{\overset{\_}{G}}_{v}^{t}{\overset{\_}{G}}_{vv}^{- 1}{\overset{\_}{G}}_{xv}^{t}}} \right)\delta \quad x} + {\left( {{\overset{\_}{G}}_{w}^{t} - {{\overset{\_}{G}}_{v}^{t}{\overset{\_}{G}}_{vv}^{- 1}{\overset{\_}{G}}_{wv}^{t}}} \right)\delta \quad w} +} \\ {{\frac{1}{2}\delta \quad {x^{t}\left( {{\overset{\_}{G}}_{xx} - {{\overset{\_}{G}}_{xv}{\overset{\_}{G}}_{vv}^{- 1}{\overset{\_}{G}}_{xv}^{t}}} \right)}\delta \quad x} + {\frac{1}{2}\delta \quad {w^{t}\left( {{\overset{\_}{G}}_{ww} - {{\overset{\_}{G}}_{wv}{\overset{\_}{G}}_{vv}^{- 1}{\overset{\_}{G}}_{wv}^{t}}} \right)}\delta \quad w} + {\delta \quad {x^{t}\left( {{\overset{\_}{G}}_{xw} - {{\overset{\_}{G}}_{xv}{\overset{\_}{G}}_{vv}^{- 1}{\overset{\_}{G}}_{wv}^{t}}} \right)}\delta \quad w}} \end{Bmatrix}.}} & (265) \end{matrix}$

If like coefficients in Equation (265) are equated, then the desired conditions are obtained: $\begin{matrix} {{{\overset{\_}{J}}^{*}\left( t_{f} \right)} = {\overset{\_}{G} - {\frac{1}{2}{\overset{\_}{G}}_{v}^{t}{\overset{\_}{G}}_{vv}^{- 1}{\overset{\_}{G}}_{v}}}} & (266) \end{matrix}$

 {overscore (J)} _(x)*(t _(f))={overscore (G)} _(x) ^(t) −{overscore (G)} _(v) ^(t) {overscore (G)} _(vv) ⁻¹ {overscore (G)} _(xv) ^(t)  (267)

{overscore (J)} _(w)*(t _(f))={overscore (G)} _(w) ^(t) −{overscore (G)} _(v) ^(t) {overscore (G)} _(vv) ⁻¹ {overscore (G)} _(wv) ^(t)  (268)

{overscore (J)} _(xx)*(t _(f))={overscore (G)} _(xx) −{overscore (G)} _(xv) {overscore (G)} _(vv) ⁻¹ {overscore (G)} _(xv) ^(t)  (269)

{overscore (J)} _(ww)*(t _(f))={overscore (G)} _(ww) −{overscore (G)} _(wv) {overscore (G)} _(vv) ⁻¹ {overscore (G)} _(wv) ^(t)  (270)

{overscore (J)} _(xw)*(t _(f))={overscore (G)} _(xw) −{overscore (G)} _(xv) {overscore (G)} _(vv) ⁻¹ {overscore (G)} _(wv) ^(t).  (271)

The system of equations (254)-(259) with the definition equations (244)-(253) and condition equations (266)-(271) provide a means to compute α(t), β(t), and γ(t) at any time between t₀ and t_(f). The coefficients α(t), β(t), and γ(t) define the update equation (217) for the dynamic control v at all times t. All that remains is to derive an update for the static parameter vector w. This is accomplished as follows.

The quadratic approximation of J* analogous to Equation (261) with t=t₀ is: $\begin{matrix} \begin{matrix} {{J^{*}\left( {{\delta \quad x},{\delta \quad w},t_{0}} \right)} = \quad {{\overset{\_}{J}}^{*} + {{\overset{\_}{J}}_{x}^{*}\delta \quad x} + {{\overset{\_}{J}}_{w}^{*}\delta \quad w} + {\frac{1}{2}\delta \quad x^{t}{\overset{\_}{J}}_{xx}^{*}\delta \quad x} +}} \\ {\quad {{\frac{1}{2}\delta \quad w^{t}{\overset{\_}{J}}_{ww}^{*}\delta \quad w} + {\delta \quad x^{t}{\overset{\_}{J}}_{xw}^{*}\delta \quad w} + {H.O.T.}}} \end{matrix} & (272) \end{matrix}$

The objective equation (272) must be minimized (or maximized) with respect to δw. In addition, the fact that δx(t ₀) is a function of δw must be taken into account by using the relationship:

δx(t ₀)≐Γ(w)−Γ({overscore (w)})=Γ(w)−{overscore (Γ)}.

The quadratic expansion of Γ(w) is,

{circumflex over (δ)}x(w)[i]={overscore (Γ)} _(w) δw+½δw ^(t){overscore (Γ)}_(ww) [i, :]δw.  (273)

δx(t ₀) can be eliminated from Equation (272) by substituting Equation (273) into Equation (272) to obtain: $\begin{matrix} \begin{matrix} {{J^{*}\left( {{\delta \quad w},t_{0}} \right)} = \quad {{\overset{\_}{J}}^{*} + {\left( {{{\overset{\_}{J}}_{x}^{*t}{\overset{\_}{\Gamma}}_{w}} + {\overset{\_}{J}}_{w}^{*t}} \right)\delta \quad w} +}} \\ {\quad {\frac{1}{2}\delta \quad {w^{t}\left( {{\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{\Gamma}}_{ww}\left\lbrack {i,{:{,:}}} \right\rbrack}}} +} \right.}}} \\ {{\left. \quad {{{\overset{\_}{\Gamma}}_{w}^{t}{\overset{\_}{J}}_{xx}^{*}{\overset{\_}{\Gamma}}_{w}} + {\overset{\_}{J}}_{xx}^{*} + {{\overset{\_}{\Gamma}}_{w}^{t}{\overset{\_}{J}}_{xw}^{*}} + {{\overset{\_}{J}}_{xw}^{*t}{\overset{\_}{\Gamma}}_{w}}} \right)\delta \quad w},} \end{matrix} & (274) \end{matrix}$

neglecting higher order terms. With the definitions $\begin{matrix} {{\overset{\sim}{J}}_{w}^{*} \doteq {{{\overset{\_}{J}}_{x}^{*t}{\overset{\_}{\Gamma}}_{w}} + {\overset{\_}{J}}_{w}^{*t}}} & (275) \\ \begin{matrix} {{\overset{\sim}{J}}_{ww}^{*} \doteq \quad {{\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{\Gamma}}_{ww}\left\lbrack {i,{:{,:}}} \right\rbrack}}} + {{\overset{\_}{\Gamma}}_{w}^{t}{\overset{\_}{J}}_{xx}^{*}{\overset{\_}{\Gamma}}_{w}} +}} \\ {\quad {{{\overset{\_}{J}}_{xx}^{*} + {{\overset{\_}{\Gamma}}_{w}^{t}{\overset{\_}{J}}_{xw}^{*}} + {{\overset{\_}{J}}_{xw}^{*t}{\overset{\_}{\Gamma}}_{w}}},}} \end{matrix} & (276) \end{matrix}$

Equation (274) can be rewritten: $\begin{matrix} {{J^{*}\left( {{\delta \quad w},t_{0}} \right)} = {{\overset{\_}{J}}^{*} + {{\overset{\sim}{J}}_{w}^{*t}\delta \quad w} + {\frac{1}{2}\delta \quad w^{t}{\overset{\sim}{J}}_{ww}^{*}\delta \quad {w.}}}} & (277) \end{matrix}$

Assuming {tilde over (J)}_(ww)* is positive definite (or negative definite for maximization,) the necessary condition of optimality is

∇_(w) J*(δw, t ₀)=0={tilde over (J)} _(w) *+{tilde over (J)} _(ww) *δw.  (278)

An update for the nominal static parameter vector {overscore (w)} can be obtained by solving Equation (278) for δw:

ξ≐δw=−({tilde over (J)} _(ww)*)⁻¹ {tilde over (J)} _(w)*.  (279)

The following subsection summarizes the fully continuous SDC algorithm steps.

2. The SDC Algorithm For the Fully Continuous Formulation Algorithm Parameters

n=dimension of the state vector x(t)

m′=dimension of the dynamic control vector v(t)

l=dimension of the static parameter vector w

t₀, t_(f)=times marking the beginning and end of the problem

General Formulation

Given a user specified useful objective function of the form,

J(v(t=t ₀ to t _(f)), w)=∫_(t) ₀ ^(t) ^(_(f)) F(x(t), v(t), w, t)dt+G(x(t _(f)), v(t _(f)), w, t _(f)),  (280)

where either of t₀<t_(f) and t₀>t_(f) is permitted. The fully continuous formulation of the present invention finds a dynamic control vector v, and a static parameter vector w such that J is minimized (or analogously maximized), $\begin{matrix} {J^{*} = {\min\limits_{v,w}{{J\left( {{v\left( {t = {t_{0}\quad {to}\quad t_{f}}} \right)},w} \right)}.}}} & (281) \end{matrix}$

The minimization (or maximization) is subject to a user specified state equation: $\begin{matrix} {\frac{{x(t)}}{t} = {{{T\left( {{x(t)},{v(t)},w,t} \right)}\quad {x\left( {t = t_{0}} \right)}} = {{\Gamma (w)}.}}} & (282) \end{matrix}$

The dynamic control vector, v(t)εR^(m′), is a continuous function of time over the specified interval (t ₀, t_(f)). N₀ parametric or dynamic limitation is assumed. The components of the static parameter vector wεR^(l) are fixed-in-time parameters (i.e. non-dynamic).

The time interval (t ₀, t_(f)) may be chosen arbitrarily. This formulation requires that both the dynamic control vector v(t) and the static parameter vector w are optimized simultaneously. The system state at time t₀, Γ(w)εR^(n) is assumed to be a continuously differentiable function of the static parameter vector w.

The state vector x(t)εR^(n) is a continuous function of time. It is assumed that the user selected functions FεR, GεR, and TεR^(n) are continuously differentiable with respect to the state vector x, the dynamic control vector v, and the parameter vector w. The functions F and T may be discontinuous functions of time t.

In addition, the user may define linear or nonlinear constraints of the form:

L(x(t), v(t), w, t)≧0 and/or K(x(t), v(t), w, t)=0.  (283)

3. The Steps of the Fully Continuous SDC Algorithm

This subsection outlines the steps for implementing the SDC algorithm for the fully continuous formulation. The theoretical basis for the fully continuous formulation is presented in subsection 1, of Appendix B.

With reference to FIG. 11, Step 500 incorporates the constraint equations (31), if present, into the useful objective function (182) using a twice differentiable penalty function or other standard constraint method.

Step 501 provides an initial (arbitrary) value for the dynamic control vector v(t) for t=t₀ to t_(f) and the static parameter vector w. The initial values are denoted {overscore (v)}(t) and {overscore (w)}. Next. the time evolution of the system state vector x(t), subject to x(t=t₀)=Γ(w), is calculated using {overscore (v)}(t) and {overscore (w)} by integrating the state equation (183). The resulting state vector is denoted {overscore (x)}(t). The useful objective value J({overscore (v)}, {overscore (w)}) is computed using Equation (182). The resulting objective value is denoted {overscore (J)}.

Step 502 initializes the program parameter ε=1.

Step 503 completes the following calculation comprising a first substep followed by a second substep.

The first substep of step 503 is the integration of the system of coupled, ordinary differential equations (284)-(289) from t=t_(f) to t=t₀ using the condition equations (290)-(295) and the definition equations (296)-(305). The integration results in {overscore (J)}(t ₀), {overscore (J)}_(x)*(t ₀), {overscore (J)}_(w)*(t ₀), {overscore (J)}_(xx)*(t ₀), {overscore (J)}_(ww)*(t ₀), and {overscore (J)}_(xw)*(t ₀). $\begin{matrix} {{- {{\overset{\overset{.}{\_}}{J}}^{*}(t)}} = {C_{0} - {\frac{1}{2}C_{2}^{t}C_{5}^{- 1}C_{2}}}} & (284) \end{matrix}$

 −{overscore ({dot over (J)})} _(x)*(t)=C ₁ −C ₇ C ₅ ⁻¹ C ₂  (285)

−{overscore ({dot over (J)})} _(w)*(t)=C ₃ −C ₉ C ₅ ⁻¹ C ₂  (286)

−{overscore ({dot over (J)})} _(xx)*(t)=C ₄ −C ₇ C ₅ ⁻¹ C ₇ ^(t)  (287)

−{overscore ({dot over (J)})} _(ww)*(t)=C ₆ −C ₉ C ₅ ⁻¹ C ₉ ^(t)  (288)

−{overscore ({dot over (J)})} _(xw)*(t)=C ₈ −C ₇ C ₅ ⁻¹ C ₉ ^(t)  (289)

The condition equations are

{overscore (J)}*(t _(f))={overscore (G)}−½{overscore (G)} _(v) ^(t) {overscore (G)} _(vv) ³¹ ¹ {overscore (G)} _(v)  (290)

{overscore (J)} _(x)*(t _(f))={overscore (G)} _(x) ^(t) −{overscore (G)} _(v) ^(t) {overscore (G)} _(vv) ⁻¹ {overscore (G)} _(xv) ^(t)  (291)

{overscore (J)} _(w)*(t _(f))={overscore (G)} _(w) ^(t) −{overscore (G)} _(v) ^(t) {overscore (G)} _(vv) ⁻¹ {overscore (G)} _(wv) ^(t)  (292)

{overscore (J)} _(xx)*(t _(f))={overscore (G)} _(xx) −{overscore (G)} _(xv) {overscore (G)} _(vv) ⁻¹ {overscore (G)} _(xv) ^(t)  (293)

{overscore (J)} _(ww)*(t _(f))={overscore (G)} _(ww) −{overscore (G)} _(wv) {overscore (G)} _(vv) ⁻¹ {overscore (G)} _(wv) ^(t)  (294)

{overscore (J)} _(xw)*(t _(f))={overscore (G)} _(xw) −{overscore (G)} _(xv) {overscore (G)} _(vv) ⁻¹ {overscore (G)} _(wv) ^(t).  (295)

The definitions of C_(i) are

C ₀(t)={overscore (F)}  (296)

C ₁(t)={overscore (F)} _(x) +{overscore (T)} _(x) ^(t) {overscore (J)} _(x)*  (297)

C ₂(t)={overscore (F)} _(v) +{overscore (T)} _(v) ^(t) {overscore (J)} _(x)*  (298)

 C ₃(t)={overscore (F)} _(w) +{overscore (T)} _(w) ^(t) {overscore (J)} _(x)*  (299)

$\begin{matrix} {{C_{4}(t)} = {{\overset{\_}{F}}_{xx} + {{\overset{\_}{J}}_{xx}^{*}{\overset{\_}{T}}_{x}} + {{\overset{\_}{T}}_{x}^{t}{\overset{\_}{J}}_{xx}^{*}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{xx}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (300) \\ {{C_{5}(t)} = {{\overset{\_}{F}}_{vv} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{vv}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (301) \\ {{C_{6}(t)} = {{\overset{\_}{F}}_{ww} + {{\overset{\_}{J}}_{xw}^{*t}{\overset{\_}{T}}_{w}} + {{\overset{\_}{T}}_{w}^{t}{\overset{\_}{J}}_{xw}^{*}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{ww}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (302) \\ {{C_{7}(t)} = {{\overset{\_}{F}}_{xv} + {{\overset{\_}{J}}_{xx}^{*}{\overset{\_}{T}}_{v}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{xv}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (303) \\ {{C_{8}(t)} = {{\overset{\_}{F}}_{xw} + {{\overset{\_}{J}}_{xx}^{*}{\overset{\_}{T}}_{w}} + {{\overset{\_}{T}}_{x}^{t}{\overset{\_}{J}}_{xw}^{*}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{\overset{\_}{T}}_{xw}\left\lbrack {i,{:{,:}}} \right\rbrack}}}}} & (304) \\ {{C_{9}(t)} = {{\overset{\_}{F}}_{wv} + {{\overset{\_}{J}}_{xw}^{*t}{\overset{\_}{T}}_{v}} + {\sum\limits_{i = 1}^{n}{{{\overset{\_}{J}}_{x}^{*}\lbrack i\rbrack}{{{\overset{\_}{T}}_{wv}\left\lbrack {i,{:{,:}}} \right\rbrack}.}}}}} & (305) \end{matrix}$

The second substep of step 503 is completed concurrently with the integration of Equations (284)-(289). The intermediate results of the integration of Equations (284)-(289) are used to evaluate and store:

α(t)=−C ₅ ⁻¹(t)C ₂(t)

β(t)=−C ₅ ⁻¹(t)C ₇ ^(t)(t)

γ(t)=−C ₅ ⁻¹(t)C ₉ ^(t)(t)

When the integration of Equations (284)-(289) is completed, the following are evaluated and stored:

{tilde over (J)} _(w) *={overscore (J)} _(x) ^(*t)(t ₀){overscore (Γ)}_(w) +{overscore (J)} _(w) ^(*t)(t ₀),

$\begin{matrix} {{\overset{\sim}{J}}_{ww}^{*} = \quad {{\sum\limits_{i = 1}^{n}{{{{\overset{\_}{J}}_{x}^{*}\left( t_{0} \right)}\lbrack i\rbrack}{{\overset{\_}{\Gamma}}_{ww}\left\lbrack {i,{:{,:}}} \right\rbrack}}} + {{\overset{\_}{\Gamma}}_{w}^{t}{{\overset{\_}{J}}_{xx}^{*}\left( t_{0} \right)}{\overset{\_}{\Gamma}}_{w}} +}} \\ {\quad {{{{\overset{\_}{J}}_{xx}^{*}\left( t_{0} \right)} + {{\overset{\_}{\Gamma}}_{w}^{t}{{\overset{\_}{J}}_{xw}^{*}\left( t_{0} \right)}} + {{{\overset{\_}{J}}_{xw}^{*t}\left( t_{0} \right)}{\overset{\_}{\Gamma}}_{w}}},}} \end{matrix}$

and

ξ=−({tilde over (J)} _(ww)*)⁻¹ {tilde over (J)} _(w)*.

Step 504 calculates the updated static parameter vector w and the updated dynamic control vector v(t) for t=t₀ to t=t_(f). The resulting state vector x(t) is also calculated.

First, the updated static parameter vector is calculated using,

w={overscore (w)}+εξ.

Next, the updated state x(t) at time to is calculated using:

x(t ₀)=Γ(w).

The updated value of w and the updated dynamic control vector v(t)={overscore (v)}(t)+δv(t) where

δv(t)=εα(t)+β(t)δx(t)+εγ(t)ξ

is used to calculate the updated state x(t) by integrating the state equation (183) from time t₀ to time t_(f).

Concurrently with Step 504, the useful objective function in Equation (182) is evaluated using the updated x(t), v(t), and w. The resulting objective value is denoted J(ε).

Step 505 compares the useful objective value J(ε) with the useful objective value {overscore (J)}. If there is satisfactory change, the values of the variables {overscore (J)}, {overscore (v)}(t), {overscore (w)}, and {overscore (x)}(t) are respectively replaced by the values of J(ε), v(t), w, and x(t). A satisfactory change is a satisfactory reduction to J(ε) if J is to be minimized. A satisfactory change is a satisfactory increase to J(ε) if J is to be maximized. If there is not a satisfactory change, then ε reduced and Step 504 is repeated. For example, ε can be reduced by one half. A satisfactory change criteria may include a requirement that the observed change in the objective be at least half expected change if the problem were exactly quadratic.

Step 506 is a test for convergence. If convergence is achieved, then the calculation ends. If convergence is not yet achieved, then the Steps 502, 503, 504, and 505 are repeated. A convergence test is: an optimal solution is found when 1) ε=1 results in only a very small change in w, v, and the useful objective (J(ε)−{overscore (J)}) and the change in the objective is very 101 small and nearly equal to the expected quadratic change; and 2) {overscore (J)}_(vv)*(t′), tε(t ₀, t_(f)), {overscore (G)}_(vv), and {overscore (J)}_(ww)* are all positive definite for minimization or all negative definite for maximization. This convergence test satisfies the necessary and sufficient conditions of optimality.

A normalized time substitution method analogous to the one presented in subsection 6 of the Detailed Description section for the period formulation can be used with the fully continuous SDC algorithm. Also, an expected quadratic change for the fully continuous formulation can be computed in a fashion analogous to the method presented in subsection 8 of the Detailed Description section for the period formulation. When any of {overscore (J)}_(vv)*(t′), t′ε(t ₀, t_(f)), {overscore (G)}_(vv), and {tilde over (J)}_(ww)* are not definite, a variation of the well known trust region method or shifting method can be used. 

What is claimed is:
 1. A method for optimizing a useful objective function, comprising the steps of: (a) providing a computer system having: a memory device; a code located on the memory device; a processor for executing the code; and the useful objective function J coupled to the code, wherein the code includes a static/dynamic control program for optimizing J with respect to a dynamic control vector v(t) and a static parameter vector w, and wherein t denotes time; (b) providing input data for the static/dynamic control program, wherein the input data is coupled to the code; (c) optimizing J with respect to v(t) and w, by executing the static/dynamic control program and using the input data; and (d) outputting a computed result from the optimizing step to an output device within the computer system.
 2. The method of claim 1, wherein the step of optimizing J comprises minimizing J.
 3. The method of claim 1, wherein the step of optimizing J comprises maximizing J.
 4. The method of claim 1, further comprising utilizing the optimized useful objective.
 5. The method of claim 1, wherein the step of optimizing J comprises simultaneously optimizing a spacecraft trajectory and a spacecraft design.
 6. The method of claim 1, wherein the step of providing input data further comprises storing the input data on the memory device.
 7. The method of claim 1, wherein the step of providing input data further comprises transferring the input data from a second memory device to the code.
 8. The method of claim 1, wherein the input data includes specification of J.
 9. The method of claim 1, wherein the computed result includes v(t) and w.
 10. The method of claim 1, wherein ${J = {{\int_{t_{0}}^{t_{N}}{{F\left( {{x(t)},{v(t)},w,t} \right)}{t}}} + {\sum\limits_{i = 1}^{N}{G\left( {{x\left( t_{i} \right)},u_{i},w,t_{i},i} \right)}}}},$

wherein N is a positive integer, wherein x(t) satisfies a state equation, wherein for each positive integer i from 1 to N inclusive: v(t)=ƒ(u_(i), w, t, i) for t in a range of t_(i−1) to t_(i), and u_(i) is a dynamic parameter vector that is constant for t in the range of t_(i−1) to t_(i), and wherein optimizing J comprises optimizing J with respect to u₁, . . . , u_(N), and w.
 11. The method of claim 10, wherein the step of providing input data includes specifying: F(x(t), v(t), w, t), t₀, and t_(i) for all integers i from 1 to N inclusive, the state equation, ƒ(u_(i), w, t_(i), i) for all integers i from 1 to N inclusive, and G(x(t _(i)), u_(i), w, t_(i), i) for all integers i from 1 to N inclusive.
 12. The method of claim 10, wherein optimizing J includes optimizing J subject to a constraint that relates x(t), v(t), w, and t.
 13. The method of claim 10, wherein optimizing J includes performing a normalized time substitution.
 14. The method of claim 1, wherein wherein J=ƒ_(t) ₀ ^(t) ^(_(f)) F(x(t),v(t), w, t)dt+G(x(t _(f)), v(t _(f)), w, t_(f)) wherein x(t) satisfies a state equation, wherein v(t) is continuous for t in a range of t₀ to t_(f), and wherein optimizing J comprises optimizing J with respect to v(t) and w.
 15. The method of claim 14, wherein the step of providing input data includes specifying F(x(t), v(t), t₀, t), t₀, t_(f), the state equation, and G(x(t _(f)), v(t _(f)), w, t_(f)).
 16. The method of claim 14, wherein optimizing J includes optimizing J subject to a constraint that relates x(t), v(t), w, and t.
 17. The method of claim 14, wherein optimizing J includes performing a normalized time substitution.
 18. A computer system for optimizing a useful objective function, comprising: a memory device; a computer code located on the memory device; a computer processor for executing the computer code; the useful objective function J coupled to the computer code, wherein the computer code includes a static/dynamic control program for performing an optimization of J with respect to a dynamic control vector v(t) and a static parameter vector w, and wherein t denotes time; input data for the static/dynamic control program; and an output device for receiving a result from the static/dynamic control program.
 19. The computer system of claim 18, wherein the input data is located on the memory device.
 20. The computer system of claim 18, further comprising a second memory device, wherein the input data is located on the second memory device.
 21. The computer system of claim 18, wherein the optimization of J includes a minimization of J.
 22. The computer system of claim 18, wherein the optimization of J includes a maximization of J.
 23. The computer system of claim 18, wherein the optimization of J includes a simultaneous optimization of a spacecraft trajectory and a spacecraft design.
 24. The computer system of claim 18, wherein ${J = {{\int_{t_{0}}^{t_{N}}{{F\left( {{x(t)},{v(t)},w,t} \right)}{t}}} + {\sum\limits_{i = 1}^{N}{G\left( {{x\left( t_{i} \right)},u_{i},w,t_{i},i} \right)}}}},$

wherein N is a positive integer, wherein x(t) satisfies a state equation, wherein for each positive integer i from 1 to N inclusive: v(t)=f(u_(i), w, t, i) for t in a range of t_(i−1) to t_(i), and u_(i) is a dynamic control vector that is constant in the range t−1 , to t_(i), and wherein optimizing J comprises optimizing J with respect to u₁, . . . , u_(N), and w.
 25. The computer system of claim 24, wherein optimizing J includes optimizing J subject to a constraint that relates x(t), v(t), w, and t.
 26. The computer system of claim 18 wherein wherein J = ∫_(t₀)^(t_(f))F(x(t), v(t), w, t)t + G(x(t_(f)), v(t_(f)), w, t_(f))

wherein x(t) satisfies a state equation, wherein v(t) is continuous for t in a range of t₀ to t_(f), and wherein optimizing J comprises optimizing J with respect to v(t) and w.
 27. The computer system of claim 26, wherein optimizing J includes optimizing J subject to a constraint that relates x(t), v(t), w, and t.
 28. A computer system for optimizing a useful objective function, comprising: a memory means for storing data on a memory device; a computer code, located on the memory device, for optimizing the useful objective function J with respect to a dynamic control vector v(t) and a static parameter vector w, wherein t denotes time; a processor means for executing the computer code; an input means for transferring input data to the static/dynamic control program; and an output means for receiving a result from the static/dynamic control program. 